tilemap-editor 3.3.5__tar.gz → 3.3.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tilemap_editor-3.3.5/src/tilemap_editor.egg-info → tilemap_editor-3.3.7}/PKG-INFO +1 -1
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/pyproject.toml +1 -1
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/editor.py +6 -51
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/frame_picker.py +8 -32
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/filemanager.py +13 -3
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/spritesheet_grid.py +3 -3
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/LICENSE +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/MANIFEST.in +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/README.md +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/check.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/checked.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/close.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/error.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/file.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/filedead.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/fit.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/folder.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/grid.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/image.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/info.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/load.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/loop.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/pan.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/pause.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/pencil.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/play.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/plus.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/radio.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/reset.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/save.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/stop.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/tileset.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/warning.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/setup.cfg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/configs/themes.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/constants.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/event_map.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/layers.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/main.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/node_manager.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/nodes.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/models.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/protocols.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/shape_editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/standalone.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/models.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/protocols.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/standalone.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/__main__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/clipboard_util.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/models.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/preview.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/protocols.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/runtime_load.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/standalone.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/timeline.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/validation.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_editor/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_editor/editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_editor/standalone.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/collision_painter.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/models.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/protocols.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/standalone.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_automap.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_error_console.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_filemanager.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/standalone_image_viewer.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/__main__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/check.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/checked.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/close.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/error.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/file.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/fit.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/folder.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/grid.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/image.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/info.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/load.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/loop.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/pan.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/pause.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/play.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/plus.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/radio.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/reset.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/save.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/stop.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/warning.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/cli.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/main.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/settings.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/SOURCES.txt +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/requires.txt +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/top_level.txt +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/ttypes/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/ttypes/tilemap.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/editor_preference.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/error_handler.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/font_manager.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/history.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/icon_manager.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/icons_cache.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/log_capture.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/project_paths.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/serialization.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/standalone.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/utils/validation.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/__init__.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/automap_models.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/autotile_template.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/autotiler.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/input.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/layer_selector.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/map_properties.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/mapsetup.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/particle_presets.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/particle_system.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/regex_automap_designer.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/tile_grid.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/tile_selector.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/checkbox.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/collision_layer_mask.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/collision_layer_sidebar.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/confirm_dialog.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/draw_utils.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/fileinput.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/layer_type_dialog.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/menubar.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/mode_indicator.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/node_editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/node_selector.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/notification.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/particle_config_dialog.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/property_editor.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/region_selector.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/status_bar.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/theme.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/tileset_type_dialog.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/toolbar.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/widgets/ui/tooltip.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_animation_library_grid_offset.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_collision_layer_mask.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_collision_layer_sidebar.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_editor_pan_mode.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_project_paths.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_render_scale.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_sprite_animation_editor_grid.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_tile_grid_selection.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_tile_selector_pick.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_tilemap_save.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_timeline_invalidate_cache.py +0 -0
- {tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/tests/test_toolbar_tools.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tilemap-editor"
|
|
7
|
-
version = "3.3.
|
|
7
|
+
version = "3.3.7"
|
|
8
8
|
description = "Pygame tilemap editor with SVG icons, professional UI, and sprite animation tools"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -310,10 +310,11 @@ class SpriteAnimationEditor:
|
|
|
310
310
|
)
|
|
311
311
|
elif event.type == pygame.KEYDOWN:
|
|
312
312
|
if event.key == pygame.K_ESCAPE:
|
|
313
|
-
if self.
|
|
314
|
-
self.
|
|
313
|
+
if self._info_tooltip_pinned:
|
|
314
|
+
self._info_tooltip_pinned = False
|
|
315
315
|
continue
|
|
316
|
-
if
|
|
316
|
+
# Don't close editor if file manager is open - let file manager handle ESC
|
|
317
|
+
if self._file_manager is None:
|
|
317
318
|
running = False
|
|
318
319
|
continue
|
|
319
320
|
self.handle_event(event)
|
|
@@ -382,11 +383,6 @@ class SpriteAnimationEditor:
|
|
|
382
383
|
self._info_tooltip_pinned = False
|
|
383
384
|
return True
|
|
384
385
|
|
|
385
|
-
# Close dropdown on Escape
|
|
386
|
-
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE and self._dropdown_open:
|
|
387
|
-
self._dropdown_open = False
|
|
388
|
-
return True
|
|
389
|
-
|
|
390
386
|
if self._meta_panel_open and self._route_meta_panel_event(event):
|
|
391
387
|
return True
|
|
392
388
|
|
|
@@ -431,14 +427,6 @@ class SpriteAnimationEditor:
|
|
|
431
427
|
self._start_rename()
|
|
432
428
|
return True
|
|
433
429
|
|
|
434
|
-
# [ / ]: Cycle animations
|
|
435
|
-
elif event.key == pygame.K_LEFTBRACKET:
|
|
436
|
-
self._cycle_animation(-1)
|
|
437
|
-
return True
|
|
438
|
-
elif event.key == pygame.K_RIGHTBRACKET:
|
|
439
|
-
self._cycle_animation(1)
|
|
440
|
-
return True
|
|
441
|
-
|
|
442
430
|
# Close dropdown on outside click
|
|
443
431
|
if event.type == pygame.MOUSEBUTTONDOWN and self._dropdown_open:
|
|
444
432
|
mouse = pygame.mouse.get_pos()
|
|
@@ -1252,32 +1240,13 @@ class SpriteAnimationEditor:
|
|
|
1252
1240
|
screen.blit(text_surf, (tooltip_rect.x + padding, y))
|
|
1253
1241
|
y += line_height
|
|
1254
1242
|
|
|
1255
|
-
def _compute_dropdown_width(self, names: List[str]) -> int:
|
|
1256
|
-
capped = self._active_anim_name or "(none)"
|
|
1257
|
-
if len(capped) > 16:
|
|
1258
|
-
capped = capped[:14] + ".."
|
|
1259
|
-
cap_w = self._font.size(f" {capped}")[0]
|
|
1260
|
-
max_name_w = 0
|
|
1261
|
-
max_badge_w = 0
|
|
1262
|
-
for name in names:
|
|
1263
|
-
w = self._font.size(name)[0]
|
|
1264
|
-
if w > max_name_w:
|
|
1265
|
-
max_name_w = w
|
|
1266
|
-
anim = self.library.get_animation(name)
|
|
1267
|
-
if anim:
|
|
1268
|
-
bw = self._font_sm.size(f"{anim.frame_count()}f")[0]
|
|
1269
|
-
if bw > max_badge_w:
|
|
1270
|
-
max_badge_w = bw
|
|
1271
|
-
dd_w = max(cap_w, max_name_w + max_badge_w + 24)
|
|
1272
|
-
return min(dd_w, 400)
|
|
1273
|
-
|
|
1274
1243
|
def _draw_dropdown(self, screen: pygame.Surface) -> None:
|
|
1275
1244
|
names = self.library.animation_names()
|
|
1276
1245
|
if not names:
|
|
1277
1246
|
return
|
|
1278
1247
|
|
|
1279
1248
|
item_h = 26
|
|
1280
|
-
dd_w = self.
|
|
1249
|
+
dd_w = self._btn_anim_selector.w
|
|
1281
1250
|
dd_h = len(names) * item_h + 4
|
|
1282
1251
|
dd_x = self._btn_anim_selector.x
|
|
1283
1252
|
dd_y = self._btn_anim_selector.bottom + 2
|
|
@@ -1312,7 +1281,7 @@ class SpriteAnimationEditor:
|
|
|
1312
1281
|
screen, _COLORS["dropdown_hover"], item_rect, border_radius=3
|
|
1313
1282
|
)
|
|
1314
1283
|
|
|
1315
|
-
display = name
|
|
1284
|
+
display = name if len(name) < 18 else name[:16] + ".."
|
|
1316
1285
|
color = _COLORS["accent"] if is_active else _COLORS["text"]
|
|
1317
1286
|
lbl = self._font.render(display, True, color)
|
|
1318
1287
|
screen.blit(lbl, (item_rect.x + 8, item_rect.y + 4))
|
|
@@ -1489,20 +1458,6 @@ class SpriteAnimationEditor:
|
|
|
1489
1458
|
self.preview.grid_offset_x = gx
|
|
1490
1459
|
self.preview.grid_offset_y = gy
|
|
1491
1460
|
|
|
1492
|
-
def _cycle_animation(self, delta: int) -> None:
|
|
1493
|
-
"""Switch to next (delta=1) or previous (delta=-1) animation."""
|
|
1494
|
-
names = self.library.animation_names()
|
|
1495
|
-
if not names:
|
|
1496
|
-
return
|
|
1497
|
-
if self._active_anim_name is None or self._active_anim_name not in names:
|
|
1498
|
-
idx = 0 if delta > 0 else len(names) - 1
|
|
1499
|
-
else:
|
|
1500
|
-
idx = (names.index(self._active_anim_name) + delta) % len(names)
|
|
1501
|
-
self._active_anim_name = names[idx]
|
|
1502
|
-
self._sync_active_animation()
|
|
1503
|
-
if self._dropdown_open:
|
|
1504
|
-
self._dropdown_hover_idx = idx
|
|
1505
|
-
|
|
1506
1461
|
def _sync_active_animation(self) -> None:
|
|
1507
1462
|
"""Push current animation data to sub-widgets."""
|
|
1508
1463
|
anim = self._get_active()
|
|
@@ -81,13 +81,9 @@ class FramePicker:
|
|
|
81
81
|
self._filter_input_rect = Rect(0, 0, 0, 0)
|
|
82
82
|
self._btn_unused_rect = Rect(0, 0, 0, 0)
|
|
83
83
|
|
|
84
|
-
# Callback fired when user clicks
|
|
84
|
+
# Callback fired when user clicks a tile
|
|
85
85
|
self.on_frame_clicked: Optional[Callable[[int], None]] = None
|
|
86
86
|
|
|
87
|
-
# Drag selection state
|
|
88
|
-
self._selecting = False
|
|
89
|
-
self._last_drag_idx = -1
|
|
90
|
-
|
|
91
87
|
# Fonts (created lazily so pygame.init() can happen anytime before draw)
|
|
92
88
|
self._font: Optional[pygame.font.Font] = None
|
|
93
89
|
self._font_sm: Optional[pygame.font.Font] = None
|
|
@@ -210,39 +206,19 @@ class FramePicker:
|
|
|
210
206
|
self.offset_y = self._pan_start_offset[1] + dy
|
|
211
207
|
return True
|
|
212
208
|
|
|
213
|
-
# Left-click to select a frame
|
|
209
|
+
# Left-click to select a frame
|
|
214
210
|
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
|
|
215
211
|
if (
|
|
216
212
|
self.rect.collidepoint(mouse)
|
|
217
213
|
and mouse[1] >= self.rect.y + TOP_BAR_TOTAL
|
|
218
214
|
):
|
|
219
215
|
idx = self._index_at(mouse)
|
|
220
|
-
if
|
|
221
|
-
|
|
222
|
-
self.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
# Drag to select/deselect multiple frames (toggles like single-click)
|
|
228
|
-
if event.type == pygame.MOUSEMOTION and self._selecting:
|
|
229
|
-
if pygame.mouse.get_pressed()[0]:
|
|
230
|
-
if self.rect.collidepoint(mouse) and mouse[1] >= self.rect.y + TOP_BAR_TOTAL:
|
|
231
|
-
idx = self._index_at(mouse)
|
|
232
|
-
if idx != self._last_drag_idx and idx >= 0 and self._tile_matches_filter(idx):
|
|
233
|
-
self._last_drag_idx = idx
|
|
234
|
-
if self.on_frame_clicked:
|
|
235
|
-
self.on_frame_clicked(idx)
|
|
236
|
-
return True
|
|
237
|
-
else:
|
|
238
|
-
self._selecting = False
|
|
239
|
-
self._last_drag_idx = -1
|
|
240
|
-
|
|
241
|
-
# End drag selection
|
|
242
|
-
if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
|
|
243
|
-
if self._selecting:
|
|
244
|
-
self._selecting = False
|
|
245
|
-
self._last_drag_idx = -1
|
|
216
|
+
if (
|
|
217
|
+
idx >= 0
|
|
218
|
+
and self._tile_matches_filter(idx)
|
|
219
|
+
and self.on_frame_clicked
|
|
220
|
+
):
|
|
221
|
+
self.on_frame_clicked(idx)
|
|
246
222
|
return True
|
|
247
223
|
|
|
248
224
|
# Scroll to pan / Ctrl+scroll to zoom
|
|
@@ -333,9 +333,19 @@ class ImagePreview:
|
|
|
333
333
|
new_height = target_height
|
|
334
334
|
new_width = int(target_height * aspect_ratio)
|
|
335
335
|
|
|
336
|
-
|
|
337
|
-
self.current_image
|
|
338
|
-
|
|
336
|
+
try:
|
|
337
|
+
image = self.current_image.convert_alpha()
|
|
338
|
+
except Exception:
|
|
339
|
+
image = self.current_image
|
|
340
|
+
|
|
341
|
+
try:
|
|
342
|
+
scaled_surface = pygame.transform.smoothscale(
|
|
343
|
+
image, (new_width, new_height)
|
|
344
|
+
)
|
|
345
|
+
except ValueError:
|
|
346
|
+
scaled_surface = pygame.transform.scale(
|
|
347
|
+
image, (new_width, new_height)
|
|
348
|
+
)
|
|
339
349
|
|
|
340
350
|
self.scaled_cache = scaled_surface
|
|
341
351
|
self.cached_target_size = (target_width, target_height)
|
|
@@ -312,7 +312,7 @@ class SpritesheetGrid:
|
|
|
312
312
|
h = self.surface.get_height()
|
|
313
313
|
new_w = max(1, int(w * factor))
|
|
314
314
|
new_h = max(1, int(h * factor))
|
|
315
|
-
self.surface = pygame.transform.
|
|
315
|
+
self.surface = pygame.transform.scale(self.surface, (new_w, new_h))
|
|
316
316
|
self.tile_size = (max(1, int(self.tile_size[0] * factor)),
|
|
317
317
|
max(1, int(self.tile_size[1] * factor)))
|
|
318
318
|
self._recalc_grid()
|
|
@@ -690,7 +690,7 @@ class SpritesheetGrid:
|
|
|
690
690
|
|
|
691
691
|
# Scaled spritesheet
|
|
692
692
|
if scaled_w > 0 and scaled_h > 0:
|
|
693
|
-
scaled = pygame.transform.
|
|
693
|
+
scaled = pygame.transform.scale(self.surface, (scaled_w, scaled_h))
|
|
694
694
|
screen.blit(scaled, (img_x, img_y))
|
|
695
695
|
|
|
696
696
|
cell_w = tw * z
|
|
@@ -740,7 +740,7 @@ class SpritesheetGrid:
|
|
|
740
740
|
gh = max(1, int(th * z))
|
|
741
741
|
ghost_rect = Rect(int(gx), int(gy), gw, gh)
|
|
742
742
|
if self.rect.colliderect(ghost_rect):
|
|
743
|
-
ghost_scaled = pygame.transform.
|
|
743
|
+
ghost_scaled = pygame.transform.scale(tile, (gw, gh))
|
|
744
744
|
ghost_scaled.set_alpha(180)
|
|
745
745
|
screen.blit(ghost_scaled, ghost_rect.topleft)
|
|
746
746
|
pygame.draw.rect(screen, (100, 220, 100), ghost_rect, 2)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf
RENAMED
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/character_collision/shape_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/__init__.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/editor.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/models.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/protocols.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/object_tileset_collision/standalone.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/sprite_animation/clipboard_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/plugins/tileset_collision/collision_painter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor/assets/icons/arrow-down.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.5 → tilemap_editor-3.3.7}/src/tilemap_editor.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|