tilemap-editor 4.3.5__tar.gz → 4.3.6__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-4.3.5/src/tilemap_editor.egg-info → tilemap_editor-4.3.6}/PKG-INFO +1 -1
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/pyproject.toml +1 -1
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/editor.py +2 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap.py +2 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor.egg-info/SOURCES.txt +1 -0
- tilemap_editor-4.3.6/src/utils/property_suggestions.py +70 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/layer_selector.py +1 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/tile_selector.py +5 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/node_editor.py +2 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/property_editor.py +118 -18
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/LICENSE +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/MANIFEST.in +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/README.md +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/check.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/checked.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/close.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/error.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/file.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/filedead.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/fit.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/folder.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/grid.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/image.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/info.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/load.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/loop.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/onion.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/pan.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/pause.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/pencil.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/play.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/plus.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/radio.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/reset.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/save.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/skip-back.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/skip-forward.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/stop.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/tileset.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/warning.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/setup.cfg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/constants.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/event_map.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/layers.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/main.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/node_manager.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/nodes.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/editor.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/models.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/protocols.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/shape_editor.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/standalone.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/editor.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/models.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/protocols.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/standalone.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/__main__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/clipboard_util.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/editor.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/frame_picker.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/models.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/preview.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/protocols.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/runtime_load.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/standalone.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/timeline.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_animation/validation.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_editor/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_editor/dialogs.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_editor/editor.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_editor/region_export.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/sprite_editor/standalone.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/collision_painter.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/editor.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/models.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/protocols.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/standalone.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/standalone_automap.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/standalone_error_console.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/standalone_filemanager.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/standalone_image_viewer.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/__main__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/check.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/checked.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/close.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/error.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/file.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/fit.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/fold_down_arrow.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/folder.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/gear.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/grid.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/image.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/info.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/load.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/loop.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/miniobj.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/onion.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/pan.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/pause.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/play.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/plus.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/radio.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/reset.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/save.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/skip-back.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/skip-forward.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/stop.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/unfold_right_arrow.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/warning.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/cli.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/main.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor/settings.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor.egg-info/requires.txt +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/tilemap_editor.egg-info/top_level.txt +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/ttypes/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/ttypes/tilemap.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/editor_preference.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/error_handler.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/font_manager.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/history.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/icon_manager.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/icons_cache.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/log_capture.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/project_paths.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/serialization.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/standalone.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/utils/validation.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/__init__.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/automap_models.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/autotile_template.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/autotiler.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/filemanager.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/input.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/map_properties.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/mapsetup.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/particle_presets.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/particle_system.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/regex_automap_designer.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/spritesheet_grid.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/tile_grid.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/button.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/checkbox.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/collision_layer_mask.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/collision_layer_sidebar.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/confirm_dialog.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/dialog_base.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/drag_tracker.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/draw_utils.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/fileinput.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/label.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/layer_type_dialog.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/menubar.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/mode_indicator.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/node_selector.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/notification.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/particle_config_dialog.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/region_selector.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/scrollbar.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/sidebar_container.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/splitter.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/status_bar.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/theme.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/tileset_type_dialog.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/toast.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/tool_manager.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/toolbar.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/tooltip.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/ui/tree_widget.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/widgets/widget_base.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_animation_library_grid_offset.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_collision_layer_mask.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_collision_layer_sidebar.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_drag_tracker.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_editor_pan_mode.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_gid_collision.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_layers_autotile.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_project_paths.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_render_scale.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_serialization_regression.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_sprite_animation_editor_grid.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_tile_grid_selection.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_tile_selector_pick.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_tilemap_save.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_timeline_invalidate_cache.py +0 -0
- {tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/tests/test_toolbar_tools.py +0 -0
|
@@ -21,6 +21,7 @@ from constants import BASE_PATH
|
|
|
21
21
|
from node_manager import NodeManager
|
|
22
22
|
from tilemap import Tilemap
|
|
23
23
|
from utils import error_context, error_handler
|
|
24
|
+
from utils.property_suggestions import PropertySuggestionRegistry
|
|
24
25
|
from utils.standalone import launch_standalone
|
|
25
26
|
from widgets.autotiler import AutotileRuleDesigner
|
|
26
27
|
from widgets.layer_selector import LayerSelector
|
|
@@ -212,6 +213,7 @@ class Editor:
|
|
|
212
213
|
self.regex_automap_designer = RegexAutomapDesigner(self, 150, 100)
|
|
213
214
|
self.notifications = NotificationManager(self)
|
|
214
215
|
self.tooltip = TooltipManager()
|
|
216
|
+
self.suggestion_registry = PropertySuggestionRegistry()
|
|
215
217
|
self.error_console_process: subprocess.Popen | None = None
|
|
216
218
|
self.property_editor: PropertyEditor | None = None
|
|
217
219
|
self.particle_config_dialog: ParticleConfigDialog | None = None
|
|
@@ -623,6 +623,8 @@ class Tilemap:
|
|
|
623
623
|
if hasattr(self.editor, "node_selector"):
|
|
624
624
|
self.editor.node_selector._rebuild_filter()
|
|
625
625
|
|
|
626
|
+
if hasattr(self.editor, "suggestion_registry"):
|
|
627
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
626
628
|
self.initialized = True
|
|
627
629
|
|
|
628
630
|
if self.editor.tile_grid_widget:
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
|
|
3
|
+
if TYPE_CHECKING:
|
|
4
|
+
from editor import Editor
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class PropertySuggestionRegistry:
|
|
8
|
+
def __init__(self):
|
|
9
|
+
self._data: dict[str, list[str]] = {}
|
|
10
|
+
|
|
11
|
+
def refresh(self, editor: "Editor"):
|
|
12
|
+
values: dict[str, set[str]] = {}
|
|
13
|
+
|
|
14
|
+
if editor.tileset_widget:
|
|
15
|
+
for ts in editor.tileset_widget.tilesets:
|
|
16
|
+
for k, v in ts.properties.items():
|
|
17
|
+
values.setdefault(k, set()).add(str(v))
|
|
18
|
+
for tile_props in ts.tile_properties.values():
|
|
19
|
+
for k, v in tile_props.items():
|
|
20
|
+
values.setdefault(k, set()).add(str(v))
|
|
21
|
+
|
|
22
|
+
if editor.tilemap:
|
|
23
|
+
for layer in editor.tilemap.layer_manager.layers:
|
|
24
|
+
for k, v in layer.properties.items():
|
|
25
|
+
values.setdefault(k, set()).add(str(v))
|
|
26
|
+
for tile in layer.tiles.values():
|
|
27
|
+
if "properties" in tile:
|
|
28
|
+
for k, v in tile["properties"].items():
|
|
29
|
+
values.setdefault(k, set()).add(str(v))
|
|
30
|
+
if layer.layer_type == "object":
|
|
31
|
+
for obj in layer.objects.values():
|
|
32
|
+
if "properties" in obj:
|
|
33
|
+
for k, v in obj["properties"].items():
|
|
34
|
+
values.setdefault(k, set()).add(str(v))
|
|
35
|
+
|
|
36
|
+
if editor.node_manager:
|
|
37
|
+
for node in editor.node_manager.nodes.values():
|
|
38
|
+
for k, v in node.properties.items():
|
|
39
|
+
values.setdefault(k, set()).add(str(v))
|
|
40
|
+
|
|
41
|
+
self._data = {k: sorted(v) for k, v in values.items()}
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def known_keys(self) -> list[str]:
|
|
45
|
+
return sorted(self._data.keys())
|
|
46
|
+
|
|
47
|
+
def ghost_text(self, key: str, input_text: str) -> str:
|
|
48
|
+
if key not in self._data:
|
|
49
|
+
return ""
|
|
50
|
+
prefix = input_text.lower()
|
|
51
|
+
matches = [
|
|
52
|
+
v
|
|
53
|
+
for v in self._data[key]
|
|
54
|
+
if v.lower().startswith(prefix) and v != input_text
|
|
55
|
+
]
|
|
56
|
+
if matches:
|
|
57
|
+
return matches[0][len(input_text):]
|
|
58
|
+
return ""
|
|
59
|
+
|
|
60
|
+
def key_ghost(self, input_text: str) -> str:
|
|
61
|
+
if not input_text:
|
|
62
|
+
return ""
|
|
63
|
+
prefix = input_text.lower()
|
|
64
|
+
matches = [
|
|
65
|
+
k for k in self._data
|
|
66
|
+
if k.lower().startswith(prefix) and k != input_text
|
|
67
|
+
]
|
|
68
|
+
if matches:
|
|
69
|
+
return sorted(matches)[0][len(input_text):]
|
|
70
|
+
return ""
|
|
@@ -408,6 +408,7 @@ class LayerSelector:
|
|
|
408
408
|
|
|
409
409
|
def _save_layer_properties(self, layer: Layer, props: dict):
|
|
410
410
|
layer.properties = props
|
|
411
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
411
412
|
print(f"Saved properties for layer: {layer.name}")
|
|
412
413
|
|
|
413
414
|
def draw(self, screen: Surface) -> None:
|
|
@@ -416,6 +416,7 @@ class TileSelector(WidgetBase):
|
|
|
416
416
|
self._tree.selected_ids = {tileset_data.uid}
|
|
417
417
|
if tileset_type == "object":
|
|
418
418
|
self.selected_tile = (0, 0, surf.get_width(), surf.get_height())
|
|
419
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
419
420
|
except Exception as e:
|
|
420
421
|
error_handler.capture(e, context="load_tileset_surface")
|
|
421
422
|
|
|
@@ -479,6 +480,7 @@ class TileSelector(WidgetBase):
|
|
|
479
480
|
self._sync_tree()
|
|
480
481
|
self._tree.selected_ids = {tileset_data.uid}
|
|
481
482
|
|
|
483
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
482
484
|
delattr(self, "_pending_tileset_path")
|
|
483
485
|
delattr(self, "_pending_tileset_surf")
|
|
484
486
|
if self._pending_tileset_queue:
|
|
@@ -561,6 +563,7 @@ class TileSelector(WidgetBase):
|
|
|
561
563
|
if not self.tilesets:
|
|
562
564
|
self.active_idx = -1
|
|
563
565
|
self._sync_tree()
|
|
566
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
564
567
|
|
|
565
568
|
def open_collision_editor(self):
|
|
566
569
|
if self.active_idx == -1 or self.active_idx >= len(self.tilesets):
|
|
@@ -573,6 +576,7 @@ class TileSelector(WidgetBase):
|
|
|
573
576
|
|
|
574
577
|
def _save_tileset_properties(self, ts: TilesetData, props: dict):
|
|
575
578
|
ts.properties = props
|
|
579
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
576
580
|
print(f"Saved properties for tileset: {ts.name}")
|
|
577
581
|
|
|
578
582
|
def _save_tile_properties(self, ts: TilesetData, variant_id: int, props: dict):
|
|
@@ -582,6 +586,7 @@ class TileSelector(WidgetBase):
|
|
|
582
586
|
def _save_tile_properties_multi(self, ts: TilesetData, variant_ids: list[int], props: dict):
|
|
583
587
|
for vid in variant_ids:
|
|
584
588
|
ts.tile_properties[vid] = props.copy()
|
|
589
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
585
590
|
if len(variant_ids) == 1:
|
|
586
591
|
print(f"Saved properties for tile {variant_ids[0]} in tileset: {ts.name}")
|
|
587
592
|
else:
|
|
@@ -356,12 +356,14 @@ class NodeEditor:
|
|
|
356
356
|
node = self.editor.node_manager.get_active_node()
|
|
357
357
|
if node:
|
|
358
358
|
node.properties = props
|
|
359
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
359
360
|
|
|
360
361
|
def _save_particle_config(self, cfg: dict):
|
|
361
362
|
node = self.editor.node_manager.get_active_node()
|
|
362
363
|
if node:
|
|
363
364
|
node.properties.clear()
|
|
364
365
|
node.properties.update(cfg)
|
|
366
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
365
367
|
self.editor.tile_grid_widget.reset_particle_preview(node.node_id, cfg)
|
|
366
368
|
|
|
367
369
|
def draw(self, screen: pygame.Surface):
|
|
@@ -52,6 +52,8 @@ class PropertyEditor:
|
|
|
52
52
|
self.is_entering_new_key = False
|
|
53
53
|
|
|
54
54
|
self._hovered_truncated: str | None = None
|
|
55
|
+
self._ghost_text: str = ""
|
|
56
|
+
self.editor.suggestion_registry.refresh(self.editor)
|
|
55
57
|
|
|
56
58
|
btn_h = 30
|
|
57
59
|
btn_w = 100
|
|
@@ -78,6 +80,7 @@ class PropertyEditor:
|
|
|
78
80
|
def _on_save_click(self):
|
|
79
81
|
self.on_save(self.properties)
|
|
80
82
|
self.active = False
|
|
83
|
+
self._ghost_text = ""
|
|
81
84
|
self.on_close()
|
|
82
85
|
|
|
83
86
|
def _on_cancel_click(self):
|
|
@@ -89,6 +92,7 @@ class PropertyEditor:
|
|
|
89
92
|
self.new_key_input = ""
|
|
90
93
|
self.selected_key = None
|
|
91
94
|
self.editing_value = False
|
|
95
|
+
self._ghost_text = self.editor.suggestion_registry.key_ghost("")
|
|
92
96
|
|
|
93
97
|
def _update_hovered_tooltip(self, mouse_pos):
|
|
94
98
|
self._hovered_truncated = None
|
|
@@ -132,10 +136,14 @@ class PropertyEditor:
|
|
|
132
136
|
self.selected_key = keys[idx]
|
|
133
137
|
self.editing_value = True
|
|
134
138
|
self.input_text = str(self.properties[self.selected_key])
|
|
139
|
+
self._ghost_text = self.editor.suggestion_registry.ghost_text(
|
|
140
|
+
self.selected_key, self.input_text
|
|
141
|
+
)
|
|
135
142
|
self.is_entering_new_key = False
|
|
136
143
|
return True
|
|
137
144
|
self.selected_key = None
|
|
138
145
|
self.editing_value = False
|
|
146
|
+
self._ghost_text = ""
|
|
139
147
|
self.is_entering_new_key = False
|
|
140
148
|
|
|
141
149
|
elif event.button == 4:
|
|
@@ -184,12 +192,36 @@ class PropertyEditor:
|
|
|
184
192
|
self.selected_key = self.new_key_input
|
|
185
193
|
self.editing_value = True
|
|
186
194
|
self.input_text = ""
|
|
195
|
+
self._ghost_text = self.editor.suggestion_registry.ghost_text(
|
|
196
|
+
self.selected_key, self.input_text
|
|
197
|
+
)
|
|
187
198
|
self.is_entering_new_key = False
|
|
188
199
|
return True
|
|
200
|
+
if event.key == pygame.K_TAB:
|
|
201
|
+
if self._ghost_text:
|
|
202
|
+
self.new_key_input = self.new_key_input + self._ghost_text
|
|
203
|
+
self._ghost_text = self.editor.suggestion_registry.key_ghost(
|
|
204
|
+
self.new_key_input
|
|
205
|
+
)
|
|
206
|
+
return True
|
|
189
207
|
if event.key == pygame.K_BACKSPACE:
|
|
190
208
|
self.new_key_input = self.new_key_input[:-1]
|
|
209
|
+
self._ghost_text = self.editor.suggestion_registry.key_ghost(
|
|
210
|
+
self.new_key_input
|
|
211
|
+
)
|
|
191
212
|
else:
|
|
192
213
|
self.new_key_input += event.unicode
|
|
214
|
+
if self._ghost_text and event.unicode:
|
|
215
|
+
if self._ghost_text[0].lower() == event.unicode.lower():
|
|
216
|
+
self._ghost_text = self._ghost_text[1:]
|
|
217
|
+
else:
|
|
218
|
+
self._ghost_text = self.editor.suggestion_registry.key_ghost(
|
|
219
|
+
self.new_key_input
|
|
220
|
+
)
|
|
221
|
+
else:
|
|
222
|
+
self._ghost_text = self.editor.suggestion_registry.key_ghost(
|
|
223
|
+
self.new_key_input
|
|
224
|
+
)
|
|
193
225
|
return True
|
|
194
226
|
|
|
195
227
|
if self.editing_value and self.selected_key:
|
|
@@ -206,15 +238,35 @@ class PropertyEditor:
|
|
|
206
238
|
pass
|
|
207
239
|
self.properties[self.selected_key] = val
|
|
208
240
|
self.editing_value = False
|
|
241
|
+
self._ghost_text = ""
|
|
242
|
+
elif event.key == pygame.K_TAB:
|
|
243
|
+
if self._ghost_text:
|
|
244
|
+
self.input_text = self.input_text + self._ghost_text
|
|
245
|
+
self._ghost_text = ""
|
|
209
246
|
elif event.key == pygame.K_BACKSPACE:
|
|
210
247
|
self.input_text = self.input_text[:-1]
|
|
248
|
+
self._ghost_text = self.editor.suggestion_registry.ghost_text(
|
|
249
|
+
self.selected_key, self.input_text
|
|
250
|
+
)
|
|
211
251
|
elif event.key == pygame.K_DELETE:
|
|
212
252
|
if self.selected_key in self.properties:
|
|
213
253
|
del self.properties[self.selected_key]
|
|
214
254
|
self.selected_key = None
|
|
215
255
|
self.editing_value = False
|
|
256
|
+
self._ghost_text = ""
|
|
216
257
|
else:
|
|
217
258
|
self.input_text += event.unicode
|
|
259
|
+
if self._ghost_text and event.unicode:
|
|
260
|
+
if self._ghost_text[0].lower() == event.unicode.lower():
|
|
261
|
+
self._ghost_text = self._ghost_text[1:]
|
|
262
|
+
else:
|
|
263
|
+
self._ghost_text = self.editor.suggestion_registry.ghost_text(
|
|
264
|
+
self.selected_key, self.input_text
|
|
265
|
+
)
|
|
266
|
+
else:
|
|
267
|
+
self._ghost_text = self.editor.suggestion_registry.ghost_text(
|
|
268
|
+
self.selected_key, self.input_text
|
|
269
|
+
)
|
|
218
270
|
return True
|
|
219
271
|
|
|
220
272
|
return True
|
|
@@ -262,23 +314,47 @@ class PropertyEditor:
|
|
|
262
314
|
key_surf = self.font_label.render(f"{key}:", True, COLORS.text)
|
|
263
315
|
screen.blit(key_surf, (row_rect.x + 10, row_rect.y + 10))
|
|
264
316
|
|
|
317
|
+
value_x = row_rect.x + 120
|
|
318
|
+
max_width = row_rect.right - value_x - 10
|
|
319
|
+
|
|
265
320
|
if is_selected and self.editing_value:
|
|
266
|
-
|
|
267
|
-
|
|
321
|
+
if self._ghost_text:
|
|
322
|
+
display_input, was_truncated = truncate_text(self.input_text, self.font_label, max_width)
|
|
323
|
+
user_surf = self.font_label.render(display_input, True, COLORS.text)
|
|
324
|
+
screen.blit(user_surf, (value_x, row_rect.y + 10))
|
|
325
|
+
cursor_x = value_x + user_surf.get_width()
|
|
326
|
+
if not was_truncated:
|
|
327
|
+
ghost_surf = self.font_label.render(self._ghost_text, True, COLORS.text_dim)
|
|
328
|
+
ghost_w = ghost_surf.get_width()
|
|
329
|
+
if cursor_x + ghost_w <= row_rect.right - 10:
|
|
330
|
+
screen.blit(ghost_surf, (cursor_x, row_rect.y + 10))
|
|
331
|
+
if pygame.time.get_ticks() // 500 % 2 == 0:
|
|
332
|
+
pygame.draw.line(
|
|
333
|
+
screen, COLORS.text,
|
|
334
|
+
(cursor_x, row_rect.y + 8),
|
|
335
|
+
(cursor_x, row_rect.y + 28), 2,
|
|
336
|
+
)
|
|
337
|
+
else:
|
|
338
|
+
val_text = self.input_text + ("|" if pygame.time.get_ticks() // 500 % 2 == 0 else " ")
|
|
339
|
+
display_val, _ = truncate_text(val_text, self.font_label, max_width)
|
|
340
|
+
val_surf = self.font_label.render(display_val, True, COLORS.text)
|
|
341
|
+
screen.blit(val_surf, (value_x, row_rect.y + 10))
|
|
268
342
|
else:
|
|
269
|
-
|
|
270
|
-
if
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
val_col = COLORS.success
|
|
343
|
+
raw_val = str(self.properties[key])
|
|
344
|
+
if raw_val == "":
|
|
345
|
+
val_text = "(empty)"
|
|
346
|
+
val_col = COLORS.text_dim
|
|
274
347
|
else:
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
348
|
+
val_text = raw_val
|
|
349
|
+
if isinstance(self.properties[key], bool):
|
|
350
|
+
val_col = COLORS.warning
|
|
351
|
+
elif isinstance(self.properties[key], (int, float)):
|
|
352
|
+
val_col = COLORS.success
|
|
353
|
+
else:
|
|
354
|
+
val_col = COLORS.text
|
|
355
|
+
display_val, _ = truncate_text(val_text, self.font_label, max_width)
|
|
356
|
+
val_surf = self.font_label.render(display_val, True, val_col)
|
|
357
|
+
screen.blit(val_surf, (value_x, row_rect.y + 10))
|
|
282
358
|
|
|
283
359
|
if self.is_entering_new_key:
|
|
284
360
|
y = self.rect.y + 40 + len(keys) * self.item_height - self.scroll_y
|
|
@@ -286,10 +362,34 @@ class PropertyEditor:
|
|
|
286
362
|
self.rect.x + 5, y + 2, self.width - 10, self.item_height - 4
|
|
287
363
|
)
|
|
288
364
|
pygame.draw.rect(screen, COLORS.selected, row_rect, border_radius=4)
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
)
|
|
292
|
-
|
|
365
|
+
label_w = self.font_label.size("New Key: ")[0]
|
|
366
|
+
lbl_surf = self.font_label.render("New Key: ", True, COLORS.text)
|
|
367
|
+
screen.blit(lbl_surf, (row_rect.x + 10, row_rect.y + 10))
|
|
368
|
+
input_x = row_rect.x + 10 + label_w
|
|
369
|
+
key_input = self.new_key_input
|
|
370
|
+
max_kw = row_rect.right - input_x - 10
|
|
371
|
+
display_key, _ = truncate_text(key_input, self.font_label, max_kw)
|
|
372
|
+
input_surf = self.font_label.render(display_key, True, COLORS.text)
|
|
373
|
+
screen.blit(input_surf, (input_x, row_rect.y + 10))
|
|
374
|
+
cursor_x = input_x + input_surf.get_width()
|
|
375
|
+
if self._ghost_text:
|
|
376
|
+
ghost_surf = self.font_label.render(self._ghost_text, True, COLORS.text_dim)
|
|
377
|
+
max_gw = row_rect.right - cursor_x - 10
|
|
378
|
+
if ghost_surf.get_width() <= max_gw:
|
|
379
|
+
screen.blit(ghost_surf, (cursor_x, row_rect.y + 10))
|
|
380
|
+
if pygame.time.get_ticks() // 500 % 2 == 0:
|
|
381
|
+
pygame.draw.line(
|
|
382
|
+
screen, COLORS.text,
|
|
383
|
+
(cursor_x, row_rect.y + 8),
|
|
384
|
+
(cursor_x, row_rect.y + 28), 2,
|
|
385
|
+
)
|
|
386
|
+
else:
|
|
387
|
+
if pygame.time.get_ticks() // 500 % 2 == 0:
|
|
388
|
+
cursor_char = "|"
|
|
389
|
+
else:
|
|
390
|
+
cursor_char = " "
|
|
391
|
+
cur_surf = self.font_label.render(cursor_char, True, COLORS.text)
|
|
392
|
+
screen.blit(cur_surf, (cursor_x, row_rect.y + 10))
|
|
293
393
|
|
|
294
394
|
screen.set_clip(clip)
|
|
295
395
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf
RENAMED
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/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
|
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/character_collision/shape_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/__init__.py
RENAMED
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/editor.py
RENAMED
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/models.py
RENAMED
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/protocols.py
RENAMED
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/object_tileset_collision/standalone.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-4.3.5 → tilemap_editor-4.3.6}/src/plugins/tileset_collision/collision_painter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|