tilemap-editor 3.3.4__tar.gz → 3.3.5__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.4/src/tilemap_editor.egg-info → tilemap_editor-3.3.5}/PKG-INFO +1 -1
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/pyproject.toml +1 -1
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/editor.py +51 -6
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/frame_picker.py +32 -8
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/LICENSE +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/MANIFEST.in +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/README.md +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/check.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/checked.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/close.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/error.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/file.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/filedead.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/fit.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/folder.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/grid.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/image.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/info.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/load.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/loop.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/pan.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/pause.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/pencil.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/play.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/plus.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/radio.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/reset.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/save.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/stop.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/tileset.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/warning.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/setup.cfg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/configs/themes.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/constants.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/event_map.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/layers.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/main.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/node_manager.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/nodes.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/models.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/protocols.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/shape_editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/standalone.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/models.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/protocols.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/standalone.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/__main__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/clipboard_util.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/models.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/preview.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/protocols.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/runtime_load.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/standalone.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/timeline.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_animation/validation.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_editor/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_editor/editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/sprite_editor/standalone.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/tileset_collision/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/tileset_collision/collision_painter.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/tileset_collision/editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/tileset_collision/models.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/tileset_collision/protocols.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/tileset_collision/standalone.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/standalone_automap.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/standalone_error_console.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/standalone_filemanager.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/standalone_image_viewer.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/__main__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/check.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/checked.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/close.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/error.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/file.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/fit.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/folder.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/grid.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/image.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/info.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/load.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/loop.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/pan.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/pause.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/play.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/plus.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/radio.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/reset.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/save.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/stop.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/warning.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/cli.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/main.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor/settings.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor.egg-info/SOURCES.txt +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor.egg-info/requires.txt +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/tilemap_editor.egg-info/top_level.txt +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/ttypes/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/ttypes/tilemap.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/editor_preference.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/error_handler.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/font_manager.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/history.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/icon_manager.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/icons_cache.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/log_capture.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/project_paths.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/serialization.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/standalone.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/utils/validation.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/__init__.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/automap_models.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/autotile_template.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/autotiler.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/filemanager.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/input.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/layer_selector.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/map_properties.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/mapsetup.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/particle_presets.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/particle_system.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/regex_automap_designer.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/spritesheet_grid.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/tile_grid.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/tile_selector.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/checkbox.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/collision_layer_mask.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/collision_layer_sidebar.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/confirm_dialog.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/draw_utils.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/fileinput.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/layer_type_dialog.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/menubar.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/mode_indicator.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/node_editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/node_selector.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/notification.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/particle_config_dialog.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/property_editor.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/region_selector.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/status_bar.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/theme.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/tileset_type_dialog.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/toolbar.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/widgets/ui/tooltip.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_animation_library_grid_offset.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_collision_layer_mask.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_collision_layer_sidebar.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_editor_pan_mode.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_project_paths.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_render_scale.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_sprite_animation_editor_grid.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_tile_grid_selection.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_tile_selector_pick.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_tilemap_save.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/tests/test_timeline_invalidate_cache.py +0 -0
- {tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/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.5"
|
|
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,11 +310,10 @@ 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._file_manager is not None:
|
|
314
|
+
self.handle_event(event)
|
|
315
315
|
continue
|
|
316
|
-
|
|
317
|
-
if self._file_manager is None:
|
|
316
|
+
if not self.handle_event(event):
|
|
318
317
|
running = False
|
|
319
318
|
continue
|
|
320
319
|
self.handle_event(event)
|
|
@@ -383,6 +382,11 @@ class SpriteAnimationEditor:
|
|
|
383
382
|
self._info_tooltip_pinned = False
|
|
384
383
|
return True
|
|
385
384
|
|
|
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
|
+
|
|
386
390
|
if self._meta_panel_open and self._route_meta_panel_event(event):
|
|
387
391
|
return True
|
|
388
392
|
|
|
@@ -427,6 +431,14 @@ class SpriteAnimationEditor:
|
|
|
427
431
|
self._start_rename()
|
|
428
432
|
return True
|
|
429
433
|
|
|
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
|
+
|
|
430
442
|
# Close dropdown on outside click
|
|
431
443
|
if event.type == pygame.MOUSEBUTTONDOWN and self._dropdown_open:
|
|
432
444
|
mouse = pygame.mouse.get_pos()
|
|
@@ -1240,13 +1252,32 @@ class SpriteAnimationEditor:
|
|
|
1240
1252
|
screen.blit(text_surf, (tooltip_rect.x + padding, y))
|
|
1241
1253
|
y += line_height
|
|
1242
1254
|
|
|
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
|
+
|
|
1243
1274
|
def _draw_dropdown(self, screen: pygame.Surface) -> None:
|
|
1244
1275
|
names = self.library.animation_names()
|
|
1245
1276
|
if not names:
|
|
1246
1277
|
return
|
|
1247
1278
|
|
|
1248
1279
|
item_h = 26
|
|
1249
|
-
dd_w = self.
|
|
1280
|
+
dd_w = self._compute_dropdown_width(names)
|
|
1250
1281
|
dd_h = len(names) * item_h + 4
|
|
1251
1282
|
dd_x = self._btn_anim_selector.x
|
|
1252
1283
|
dd_y = self._btn_anim_selector.bottom + 2
|
|
@@ -1281,7 +1312,7 @@ class SpriteAnimationEditor:
|
|
|
1281
1312
|
screen, _COLORS["dropdown_hover"], item_rect, border_radius=3
|
|
1282
1313
|
)
|
|
1283
1314
|
|
|
1284
|
-
display = name
|
|
1315
|
+
display = name
|
|
1285
1316
|
color = _COLORS["accent"] if is_active else _COLORS["text"]
|
|
1286
1317
|
lbl = self._font.render(display, True, color)
|
|
1287
1318
|
screen.blit(lbl, (item_rect.x + 8, item_rect.y + 4))
|
|
@@ -1458,6 +1489,20 @@ class SpriteAnimationEditor:
|
|
|
1458
1489
|
self.preview.grid_offset_x = gx
|
|
1459
1490
|
self.preview.grid_offset_y = gy
|
|
1460
1491
|
|
|
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
|
+
|
|
1461
1506
|
def _sync_active_animation(self) -> None:
|
|
1462
1507
|
"""Push current animation data to sub-widgets."""
|
|
1463
1508
|
anim = self._get_active()
|
|
@@ -81,9 +81,13 @@ 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 a tile
|
|
84
|
+
# Callback fired when user clicks or drags over 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
|
+
|
|
87
91
|
# Fonts (created lazily so pygame.init() can happen anytime before draw)
|
|
88
92
|
self._font: Optional[pygame.font.Font] = None
|
|
89
93
|
self._font_sm: Optional[pygame.font.Font] = None
|
|
@@ -206,19 +210,39 @@ class FramePicker:
|
|
|
206
210
|
self.offset_y = self._pan_start_offset[1] + dy
|
|
207
211
|
return True
|
|
208
212
|
|
|
209
|
-
# Left-click to select a frame
|
|
213
|
+
# Left-click to select a frame (starts drag for multi-select)
|
|
210
214
|
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
|
|
211
215
|
if (
|
|
212
216
|
self.rect.collidepoint(mouse)
|
|
213
217
|
and mouse[1] >= self.rect.y + TOP_BAR_TOTAL
|
|
214
218
|
):
|
|
215
219
|
idx = self._index_at(mouse)
|
|
216
|
-
if (
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
220
|
+
if idx >= 0 and self._tile_matches_filter(idx):
|
|
221
|
+
self._selecting = True
|
|
222
|
+
self._last_drag_idx = idx
|
|
223
|
+
if self.on_frame_clicked:
|
|
224
|
+
self.on_frame_clicked(idx)
|
|
225
|
+
return True
|
|
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
|
|
222
246
|
return True
|
|
223
247
|
|
|
224
248
|
# Scroll to pan / Ctrl+scroll to zoom
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf
RENAMED
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/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.4 → tilemap_editor-3.3.5}/src/plugins/character_collision/shape_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/__init__.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/editor.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/models.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/protocols.py
RENAMED
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/src/plugins/object_tileset_collision/standalone.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.3.4 → tilemap_editor-3.3.5}/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.4 → tilemap_editor-3.3.5}/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.4 → tilemap_editor-3.3.5}/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.4 → tilemap_editor-3.3.5}/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.4 → tilemap_editor-3.3.5}/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
|
|
File without changes
|
|
File without changes
|