snapmockit 1.2.0__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.
- snapmockit-1.2.0/.gitignore +42 -0
- snapmockit-1.2.0/LICENSE +21 -0
- snapmockit-1.2.0/PKG-INFO +179 -0
- snapmockit-1.2.0/README.md +145 -0
- snapmockit-1.2.0/packaging/appimage/build.py +304 -0
- snapmockit-1.2.0/packaging/appimage/entrypoint.sh +5 -0
- snapmockit-1.2.0/packaging/appimage/io.github.dbower44022.snapmockit.appdata.xml +36 -0
- snapmockit-1.2.0/packaging/appimage/io.github.dbower44022.snapmockit.desktop +13 -0
- snapmockit-1.2.0/packaging/appimage/io.github.dbower44022.snapmockit.xml +10 -0
- snapmockit-1.2.0/packaging/appimage/smoke.sh +41 -0
- snapmockit-1.2.0/packaging/flatpak/build.py +352 -0
- snapmockit-1.2.0/packaging/flatpak/io.github.dbower44022.snapmockit.yml +82 -0
- snapmockit-1.2.0/packaging/flatpak/python3-deps.json +29 -0
- snapmockit-1.2.0/packaging/flatpak/smoke.sh +51 -0
- snapmockit-1.2.0/packaging/flatpak/snapmockit.sh +14 -0
- snapmockit-1.2.0/pyproject.toml +114 -0
- snapmockit-1.2.0/snapmock/__init__.py +3 -0
- snapmockit-1.2.0/snapmock/__main__.py +6 -0
- snapmockit-1.2.0/snapmock/app.py +131 -0
- snapmockit-1.2.0/snapmock/capture/__init__.py +66 -0
- snapmockit-1.2.0/snapmock/capture/backend.py +315 -0
- snapmockit-1.2.0/snapmock/capture/cli.py +62 -0
- snapmockit-1.2.0/snapmock/capture/compositing.py +99 -0
- snapmockit-1.2.0/snapmock/capture/countdown.py +73 -0
- snapmockit-1.2.0/snapmock/capture/macos.py +69 -0
- snapmockit-1.2.0/snapmock/capture/manager.py +705 -0
- snapmockit-1.2.0/snapmock/capture/models.py +259 -0
- snapmockit-1.2.0/snapmock/capture/onboarding.py +197 -0
- snapmockit-1.2.0/snapmock/capture/overlay.py +672 -0
- snapmockit-1.2.0/snapmock/capture/single_instance.py +154 -0
- snapmockit-1.2.0/snapmock/capture/sound.py +32 -0
- snapmockit-1.2.0/snapmock/capture/tray.py +12 -0
- snapmockit-1.2.0/snapmock/capture/wayland_portal.py +217 -0
- snapmockit-1.2.0/snapmock/capture/window_state.py +103 -0
- snapmockit-1.2.0/snapmock/capture/windows.py +738 -0
- snapmockit-1.2.0/snapmock/capture/x11.py +651 -0
- snapmockit-1.2.0/snapmock/commands/__init__.py +5 -0
- snapmockit-1.2.0/snapmock/commands/add_item.py +37 -0
- snapmockit-1.2.0/snapmock/commands/arrange_commands.py +278 -0
- snapmockit-1.2.0/snapmock/commands/blur_commands.py +52 -0
- snapmockit-1.2.0/snapmock/commands/canvas_property_commands.py +63 -0
- snapmockit-1.2.0/snapmock/commands/canvas_transform_commands.py +113 -0
- snapmockit-1.2.0/snapmock/commands/eyedropper_commands.py +56 -0
- snapmockit-1.2.0/snapmock/commands/geometry_commands.py +138 -0
- snapmockit-1.2.0/snapmock/commands/group_commands.py +221 -0
- snapmockit-1.2.0/snapmock/commands/guide_commands.py +86 -0
- snapmockit-1.2.0/snapmock/commands/layer_commands.py +259 -0
- snapmockit-1.2.0/snapmock/commands/macro_command.py +23 -0
- snapmockit-1.2.0/snapmock/commands/marker_commands.py +136 -0
- snapmockit-1.2.0/snapmock/commands/merge_commands.py +163 -0
- snapmockit-1.2.0/snapmock/commands/modify_property.py +93 -0
- snapmockit-1.2.0/snapmock/commands/move_item_layer.py +51 -0
- snapmockit-1.2.0/snapmock/commands/move_items.py +45 -0
- snapmockit-1.2.0/snapmock/commands/move_tail_command.py +93 -0
- snapmockit-1.2.0/snapmock/commands/raster_commands.py +335 -0
- snapmockit-1.2.0/snapmock/commands/remove_item.py +36 -0
- snapmockit-1.2.0/snapmock/commands/scale_geometry_command.py +27 -0
- snapmockit-1.2.0/snapmock/commands/text_edit_command.py +109 -0
- snapmockit-1.2.0/snapmock/commands/text_format_command.py +85 -0
- snapmockit-1.2.0/snapmock/commands/transform_item.py +39 -0
- snapmockit-1.2.0/snapmock/config/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/config/constants.py +487 -0
- snapmockit-1.2.0/snapmock/config/migration.py +294 -0
- snapmockit-1.2.0/snapmock/config/packaging.py +174 -0
- snapmockit-1.2.0/snapmock/config/settings.py +718 -0
- snapmockit-1.2.0/snapmock/config/shortcuts.py +112 -0
- snapmockit-1.2.0/snapmock/core/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/core/clipboard_manager.py +131 -0
- snapmockit-1.2.0/snapmock/core/command_stack.py +206 -0
- snapmockit-1.2.0/snapmock/core/document.py +120 -0
- snapmockit-1.2.0/snapmock/core/document_manager.py +137 -0
- snapmockit-1.2.0/snapmock/core/emoji_data.py +258 -0
- snapmockit-1.2.0/snapmock/core/guides.py +81 -0
- snapmockit-1.2.0/snapmock/core/layer.py +137 -0
- snapmockit-1.2.0/snapmock/core/layer_manager.py +212 -0
- snapmockit-1.2.0/snapmock/core/path_utils.py +430 -0
- snapmockit-1.2.0/snapmock/core/process_memory.py +56 -0
- snapmockit-1.2.0/snapmock/core/render_engine.py +314 -0
- snapmockit-1.2.0/snapmock/core/rich_text_mixin.py +275 -0
- snapmockit-1.2.0/snapmock/core/scene.py +247 -0
- snapmockit-1.2.0/snapmock/core/selection_manager.py +90 -0
- snapmockit-1.2.0/snapmock/core/stamp_library.py +362 -0
- snapmockit-1.2.0/snapmock/core/theme_manager.py +430 -0
- snapmockit-1.2.0/snapmock/core/tool_themes.py +900 -0
- snapmockit-1.2.0/snapmock/core/update_check.py +246 -0
- snapmockit-1.2.0/snapmock/core/view.py +1451 -0
- snapmockit-1.2.0/snapmock/io/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/io/exporter.py +467 -0
- snapmockit-1.2.0/snapmock/io/importer.py +53 -0
- snapmockit-1.2.0/snapmock/io/project_serializer.py +344 -0
- snapmockit-1.2.0/snapmock/io/rtf_utils.py +123 -0
- snapmockit-1.2.0/snapmock/io/snagit_reader.py +400 -0
- snapmockit-1.2.0/snapmock/io/snagit_writer.py +570 -0
- snapmockit-1.2.0/snapmock/items/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/items/arc_item.py +338 -0
- snapmockit-1.2.0/snapmock/items/arrow_item.py +576 -0
- snapmockit-1.2.0/snapmock/items/base_item.py +310 -0
- snapmockit-1.2.0/snapmock/items/blur_item.py +671 -0
- snapmockit-1.2.0/snapmock/items/callout_item.py +786 -0
- snapmockit-1.2.0/snapmock/items/ellipse_item.py +80 -0
- snapmockit-1.2.0/snapmock/items/emoji_item.py +257 -0
- snapmockit-1.2.0/snapmock/items/freehand_item.py +578 -0
- snapmockit-1.2.0/snapmock/items/group_item.py +258 -0
- snapmockit-1.2.0/snapmock/items/highlight_item.py +205 -0
- snapmockit-1.2.0/snapmock/items/line_item.py +91 -0
- snapmockit-1.2.0/snapmock/items/mask_utils.py +178 -0
- snapmockit-1.2.0/snapmock/items/numbered_step_item.py +655 -0
- snapmockit-1.2.0/snapmock/items/polygon_item.py +317 -0
- snapmockit-1.2.0/snapmock/items/raster_region_item.py +105 -0
- snapmockit-1.2.0/snapmock/items/rectangle_item.py +245 -0
- snapmockit-1.2.0/snapmock/items/shadow.py +298 -0
- snapmockit-1.2.0/snapmock/items/stamp_item.py +351 -0
- snapmockit-1.2.0/snapmock/items/text_item.py +591 -0
- snapmockit-1.2.0/snapmock/items/vector_item.py +353 -0
- snapmockit-1.2.0/snapmock/library/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/library/commands.py +129 -0
- snapmockit-1.2.0/snapmock/library/file_info.py +84 -0
- snapmockit-1.2.0/snapmock/library/manager.py +632 -0
- snapmockit-1.2.0/snapmock/library/model.py +574 -0
- snapmockit-1.2.0/snapmock/library/render.py +80 -0
- snapmockit-1.2.0/snapmock/main_window.py +4478 -0
- snapmockit-1.2.0/snapmock/resources/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/resources/emoji/LICENSE +41 -0
- snapmockit-1.2.0/snapmock/resources/emoji/README.md +27 -0
- snapmockit-1.2.0/snapmock/resources/emoji/emoji.json +1 -0
- snapmockit-1.2.0/snapmock/resources/icons/snapmockit.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/LICENSE +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/README.md +17 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/app-window.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-back-up.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-bar-to-down.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-bar-to-up.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-down.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-forward-up.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-up-right.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/arrow-up.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/aspect-ratio.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/blur.svg +25 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/book.svg +23 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/border-inner.svg +32 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/bug.svg +27 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/camera.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/chevron-left.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/chevron-right.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/circle-number-1.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/circle.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/clipboard-check.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/clipboard.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/color-picker.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/color-swatch.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/components-off.svg +23 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/components.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/copy-plus.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/copy.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/crop.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/crosshair.svg +24 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/cut.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/deselect.svg +35 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/device-desktop.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/device-floppy.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/download.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/external-link.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/eye-off.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/eye.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/file-export.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/file-plus.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/flip-horizontal.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/flip-vertical.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/focus-centered.svg +23 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/folder-open.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/folder-plus.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/folder-symlink.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/folder.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/grid-dots.svg +27 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/hand-move.svg +24 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/highlight.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/history.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/home.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/info-circle.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/keyboard.svg +26 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/lasso.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layers-difference.svg +23 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layers-intersect.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layers-union.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-align-bottom.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-align-center.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-align-left.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-align-middle.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-align-right.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-align-top.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-bottombar.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-dashboard.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-distribute-horizontal.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/layout-distribute-vertical.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/line.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/link-off.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/link.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/lock-open.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/lock.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/magnet.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/marquee-2.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/message-2.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/minus.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/mood-smile.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/moon.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/new-section.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/palette.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/pencil.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/photo-plus.svg +24 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/plus.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/pointer.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/polygon.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/power.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/printer.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/refresh.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/resize.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/rotate-clockwise.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/rotate.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/rubber-stamp.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/ruler.svg +25 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/scissors.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/screenshot.svg +27 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/select-all.svg +35 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/settings.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/square.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/text-recognition.svg +24 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/trash.svg +23 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/typography.svg +23 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/vector-bezier-arc.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/x.svg +20 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/zoom-in-area.svg +27 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/zoom-in.svg +22 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/zoom-out.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/zoom-reset.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/icons/tabler/zoom-scan.svg +24 -0
- snapmockit-1.2.0/snapmock/resources/sounds/shutter.wav +0 -0
- snapmockit-1.2.0/snapmock/resources/stamps/LICENSE +21 -0
- snapmockit-1.2.0/snapmock/resources/stamps/README.md +84 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/curved-arrow-ccw.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/curved-arrow-cw.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/double-arrow-horizontal.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/double-arrow-vertical.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/magnifying-glass.svg +17 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/pointer-hand.svg +17 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/target.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/thick-arrow-down.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/thick-arrow-left.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/thick-arrow-right.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/arrows/thick-arrow-up.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/box-highlight.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/bracket-left.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/bracket-right.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/brackets.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/circle-highlight.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/ribbon.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/speech-bubble.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/starburst.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/swoosh.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/decorative/thought-bubble.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/bolt.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/bookmark.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/checkmark.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/eye-off.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/eye.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/gear.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/link.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/lock.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/minus.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/pencil.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/plus.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/trash.svg +18 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/unlink.svg +17 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/unlock.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/warning.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/shapes/x-mark.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/stamp_index.json +1193 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/approved.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/attention.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/draft.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/heart.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/info.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/question.svg +16 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/rejected.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/star.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/thumbs-down.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/status/thumbs-up.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/click.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/cursor-arrow.svg +14 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/cursor-hand.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/double-click.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/drag.svg +19 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/key.svg +21 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/right-click.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/scroll.svg +15 -0
- snapmockit-1.2.0/snapmock/resources/stamps/ui/tap.svg +2 -0
- snapmockit-1.2.0/snapmock/resources/themes/dark.qss +359 -0
- snapmockit-1.2.0/snapmock/resources/themes/light.qss +359 -0
- snapmockit-1.2.0/snapmock/tools/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/tools/arc_tool.py +347 -0
- snapmockit-1.2.0/snapmock/tools/arrow_tool.py +222 -0
- snapmockit-1.2.0/snapmock/tools/base_tool.py +342 -0
- snapmockit-1.2.0/snapmock/tools/blur_edit.py +161 -0
- snapmockit-1.2.0/snapmock/tools/blur_tool.py +659 -0
- snapmockit-1.2.0/snapmock/tools/callout_tool.py +347 -0
- snapmockit-1.2.0/snapmock/tools/crop_tool.py +305 -0
- snapmockit-1.2.0/snapmock/tools/ellipse_tool.py +147 -0
- snapmockit-1.2.0/snapmock/tools/emoji_tool.py +482 -0
- snapmockit-1.2.0/snapmock/tools/eyedropper_tool.py +400 -0
- snapmockit-1.2.0/snapmock/tools/freehand_tool.py +316 -0
- snapmockit-1.2.0/snapmock/tools/highlight_tool.py +387 -0
- snapmockit-1.2.0/snapmock/tools/lasso_select_tool.py +345 -0
- snapmockit-1.2.0/snapmock/tools/line_tool.py +123 -0
- snapmockit-1.2.0/snapmock/tools/numbered_step_tool.py +387 -0
- snapmockit-1.2.0/snapmock/tools/pan_tool.py +83 -0
- snapmockit-1.2.0/snapmock/tools/point_edit.py +687 -0
- snapmockit-1.2.0/snapmock/tools/polygon_tool.py +506 -0
- snapmockit-1.2.0/snapmock/tools/raster_select_tool.py +341 -0
- snapmockit-1.2.0/snapmock/tools/rectangle_tool.py +259 -0
- snapmockit-1.2.0/snapmock/tools/select_tool.py +1582 -0
- snapmockit-1.2.0/snapmock/tools/stamp_tool.py +468 -0
- snapmockit-1.2.0/snapmock/tools/text_tool.py +808 -0
- snapmockit-1.2.0/snapmock/tools/tool_manager.py +152 -0
- snapmockit-1.2.0/snapmock/tools/zoom_tool.py +165 -0
- snapmockit-1.2.0/snapmock/ui/__init__.py +1 -0
- snapmockit-1.2.0/snapmock/ui/about_dialog.py +119 -0
- snapmockit-1.2.0/snapmock/ui/accessibility.py +271 -0
- snapmockit-1.2.0/snapmock/ui/collapsible_section.py +76 -0
- snapmockit-1.2.0/snapmock/ui/color_picker.py +687 -0
- snapmockit-1.2.0/snapmock/ui/context_menus.py +319 -0
- snapmockit-1.2.0/snapmock/ui/crop_overlay.py +197 -0
- snapmockit-1.2.0/snapmock/ui/cursors.py +341 -0
- snapmockit-1.2.0/snapmock/ui/dimension_overlay.py +260 -0
- snapmockit-1.2.0/snapmock/ui/document_tabs.py +269 -0
- snapmockit-1.2.0/snapmock/ui/emoji_picker.py +395 -0
- snapmockit-1.2.0/snapmock/ui/export_dialog.py +565 -0
- snapmockit-1.2.0/snapmock/ui/find_replace_bar.py +328 -0
- snapmockit-1.2.0/snapmock/ui/find_replace_color_dialog.py +123 -0
- snapmockit-1.2.0/snapmock/ui/icons.py +239 -0
- snapmockit-1.2.0/snapmock/ui/item_properties_dialog.py +261 -0
- snapmockit-1.2.0/snapmock/ui/layer_panel.py +1117 -0
- snapmockit-1.2.0/snapmock/ui/layer_properties_dialog.py +117 -0
- snapmockit-1.2.0/snapmock/ui/library_panel.py +1132 -0
- snapmockit-1.2.0/snapmock/ui/loupe_overlay.py +311 -0
- snapmockit-1.2.0/snapmock/ui/manage_presets_dialog.py +286 -0
- snapmockit-1.2.0/snapmock/ui/panel_modes.py +50 -0
- snapmockit-1.2.0/snapmock/ui/preferences_dialog.py +748 -0
- snapmockit-1.2.0/snapmock/ui/property_panel.py +3156 -0
- snapmockit-1.2.0/snapmock/ui/resize_canvas_dialog.py +179 -0
- snapmockit-1.2.0/snapmock/ui/resize_image_dialog.py +161 -0
- snapmockit-1.2.0/snapmock/ui/ruler_widget.py +229 -0
- snapmockit-1.2.0/snapmock/ui/selection_overlay.py +188 -0
- snapmockit-1.2.0/snapmock/ui/shortcuts_dialog.py +214 -0
- snapmockit-1.2.0/snapmock/ui/stamp_library_panel.py +375 -0
- snapmockit-1.2.0/snapmock/ui/status_bar.py +203 -0
- snapmockit-1.2.0/snapmock/ui/step_inline_editor.py +169 -0
- snapmockit-1.2.0/snapmock/ui/toast.py +73 -0
- snapmockit-1.2.0/snapmock/ui/tool_options_bar.py +1514 -0
- snapmockit-1.2.0/snapmock/ui/tool_themes_dialog.py +362 -0
- snapmockit-1.2.0/snapmock/ui/toolbar.py +329 -0
- snapmockit-1.2.0/snapmock/ui/transform_handles.py +314 -0
- snapmockit-1.2.0/snapmock/ui/unmet_requirements.py +42 -0
- snapmockit-1.2.0/snapmock/ui/unsaved_changes_dialog.py +113 -0
- snapmockit-1.2.0/snapmock/ui/welcome_panel.py +391 -0
- snapmockit-1.2.0/tests/__init__.py +0 -0
- snapmockit-1.2.0/tests/conftest.py +137 -0
- snapmockit-1.2.0/tests/test_about_dialog.py +32 -0
- snapmockit-1.2.0/tests/test_acceptance.py +834 -0
- snapmockit-1.2.0/tests/test_accessibility.py +254 -0
- snapmockit-1.2.0/tests/test_app.py +87 -0
- snapmockit-1.2.0/tests/test_arc_point_edit.py +109 -0
- snapmockit-1.2.0/tests/test_arc_tool.py +295 -0
- snapmockit-1.2.0/tests/test_arrange_commands.py +228 -0
- snapmockit-1.2.0/tests/test_arrow_heads.py +238 -0
- snapmockit-1.2.0/tests/test_arrow_lines.py +257 -0
- snapmockit-1.2.0/tests/test_blur_brush.py +276 -0
- snapmockit-1.2.0/tests/test_blur_brush_edit.py +271 -0
- snapmockit-1.2.0/tests/test_blur_mask.py +209 -0
- snapmockit-1.2.0/tests/test_blur_modes.py +334 -0
- snapmockit-1.2.0/tests/test_blur_performance.py +127 -0
- snapmockit-1.2.0/tests/test_blur_source_modes.py +190 -0
- snapmockit-1.2.0/tests/test_canvas_area.py +268 -0
- snapmockit-1.2.0/tests/test_canvas_handles.py +219 -0
- snapmockit-1.2.0/tests/test_canvas_transform_commands.py +99 -0
- snapmockit-1.2.0/tests/test_capture/__init__.py +0 -0
- snapmockit-1.2.0/tests/test_capture/test_backend.py +85 -0
- snapmockit-1.2.0/tests/test_capture/test_cli_and_channel.py +82 -0
- snapmockit-1.2.0/tests/test_capture/test_compositing.py +80 -0
- snapmockit-1.2.0/tests/test_capture/test_main_window.py +336 -0
- snapmockit-1.2.0/tests/test_capture/test_manager.py +510 -0
- snapmockit-1.2.0/tests/test_capture/test_models.py +120 -0
- snapmockit-1.2.0/tests/test_capture/test_overlay.py +290 -0
- snapmockit-1.2.0/tests/test_capture/test_platform_stubs.py +117 -0
- snapmockit-1.2.0/tests/test_capture/test_preferences.py +162 -0
- snapmockit-1.2.0/tests/test_capture/test_wayland_portal.py +237 -0
- snapmockit-1.2.0/tests/test_capture/test_windows.py +335 -0
- snapmockit-1.2.0/tests/test_capture/test_x11.py +146 -0
- snapmockit-1.2.0/tests/test_ci_workflow.py +217 -0
- snapmockit-1.2.0/tests/test_clipboard.py +116 -0
- snapmockit-1.2.0/tests/test_clipboard_raster.py +133 -0
- snapmockit-1.2.0/tests/test_color_picker.py +253 -0
- snapmockit-1.2.0/tests/test_command_stack.py +217 -0
- snapmockit-1.2.0/tests/test_constants.py +53 -0
- snapmockit-1.2.0/tests/test_context_menus.py +437 -0
- snapmockit-1.2.0/tests/test_corner_radii.py +168 -0
- snapmockit-1.2.0/tests/test_corner_radius.py +101 -0
- snapmockit-1.2.0/tests/test_cursors.py +300 -0
- snapmockit-1.2.0/tests/test_dimension_tooltip.py +473 -0
- snapmockit-1.2.0/tests/test_documents.py +213 -0
- snapmockit-1.2.0/tests/test_drawing_preview_and_hints.py +487 -0
- snapmockit-1.2.0/tests/test_emoji_data.py +173 -0
- snapmockit-1.2.0/tests/test_emoji_item.py +190 -0
- snapmockit-1.2.0/tests/test_export_dialog.py +317 -0
- snapmockit-1.2.0/tests/test_eyedropper_apply.py +251 -0
- snapmockit-1.2.0/tests/test_eyedropper_bar.py +190 -0
- snapmockit-1.2.0/tests/test_eyedropper_loupe.py +228 -0
- snapmockit-1.2.0/tests/test_eyedropper_sampling.py +270 -0
- snapmockit-1.2.0/tests/test_find_replace_color.py +107 -0
- snapmockit-1.2.0/tests/test_freehand_cursor.py +203 -0
- snapmockit-1.2.0/tests/test_freehand_fit.py +447 -0
- snapmockit-1.2.0/tests/test_freehand_pipeline.py +258 -0
- snapmockit-1.2.0/tests/test_freehand_point_edit.py +206 -0
- snapmockit-1.2.0/tests/test_freehand_preview.py +319 -0
- snapmockit-1.2.0/tests/test_group.py +730 -0
- snapmockit-1.2.0/tests/test_guides.py +449 -0
- snapmockit-1.2.0/tests/test_help_check_updates.py +295 -0
- snapmockit-1.2.0/tests/test_highlight_straightening.py +370 -0
- snapmockit-1.2.0/tests/test_integration.py +151 -0
- snapmockit-1.2.0/tests/test_inter_tool.py +230 -0
- snapmockit-1.2.0/tests/test_io/__init__.py +0 -0
- snapmockit-1.2.0/tests/test_io/test_exporter.py +361 -0
- snapmockit-1.2.0/tests/test_io/test_importer.py +113 -0
- snapmockit-1.2.0/tests/test_io/test_project_serializer.py +179 -0
- snapmockit-1.2.0/tests/test_io/test_snagit_reader.py +76 -0
- snapmockit-1.2.0/tests/test_item_blend_mode.py +130 -0
- snapmockit-1.2.0/tests/test_item_properties_dialog.py +138 -0
- snapmockit-1.2.0/tests/test_items.py +196 -0
- snapmockit-1.2.0/tests/test_layer_commands.py +44 -0
- snapmockit-1.2.0/tests/test_layer_manager.py +208 -0
- snapmockit-1.2.0/tests/test_layer_menu_actions.py +315 -0
- snapmockit-1.2.0/tests/test_layer_panel.py +449 -0
- snapmockit-1.2.0/tests/test_layer_properties_dialog.py +115 -0
- snapmockit-1.2.0/tests/test_library_manager.py +512 -0
- snapmockit-1.2.0/tests/test_library_panel.py +561 -0
- snapmockit-1.2.0/tests/test_line_spacing.py +124 -0
- snapmockit-1.2.0/tests/test_locked_layer_edits.py +243 -0
- snapmockit-1.2.0/tests/test_main_toolbar.py +231 -0
- snapmockit-1.2.0/tests/test_manage_presets_dialog.py +168 -0
- snapmockit-1.2.0/tests/test_menus.py +251 -0
- snapmockit-1.2.0/tests/test_merge_commands.py +179 -0
- snapmockit-1.2.0/tests/test_navigation_keys.py +342 -0
- snapmockit-1.2.0/tests/test_numbered_step_editing.py +369 -0
- snapmockit-1.2.0/tests/test_numbered_step_item.py +433 -0
- snapmockit-1.2.0/tests/test_packaging_appimage.py +221 -0
- snapmockit-1.2.0/tests/test_packaging_flatpak.py +259 -0
- snapmockit-1.2.0/tests/test_packaging_form.py +217 -0
- snapmockit-1.2.0/tests/test_packaging_pypi.py +125 -0
- snapmockit-1.2.0/tests/test_paint_cost.py +119 -0
- snapmockit-1.2.0/tests/test_placement_hint_timers.py +94 -0
- snapmockit-1.2.0/tests/test_point_edit.py +279 -0
- snapmockit-1.2.0/tests/test_polygon_point_edit.py +142 -0
- snapmockit-1.2.0/tests/test_polygon_tool.py +316 -0
- snapmockit-1.2.0/tests/test_post_creation.py +227 -0
- snapmockit-1.2.0/tests/test_preferences_dialog.py +274 -0
- snapmockit-1.2.0/tests/test_preset_dropdown.py +222 -0
- snapmockit-1.2.0/tests/test_process_memory.py +39 -0
- snapmockit-1.2.0/tests/test_property_panel.py +328 -0
- snapmockit-1.2.0/tests/test_property_panel_phase6.py +255 -0
- snapmockit-1.2.0/tests/test_raster_commands.py +241 -0
- snapmockit-1.2.0/tests/test_raster_operations.py +423 -0
- snapmockit-1.2.0/tests/test_render_engine.py +106 -0
- snapmockit-1.2.0/tests/test_responsive.py +214 -0
- snapmockit-1.2.0/tests/test_rich_text.py +1372 -0
- snapmockit-1.2.0/tests/test_scene.py +42 -0
- snapmockit-1.2.0/tests/test_shape_drawing_lifecycle.py +347 -0
- snapmockit-1.2.0/tests/test_shape_modifiers.py +339 -0
- snapmockit-1.2.0/tests/test_shortcuts_dialog.py +46 -0
- snapmockit-1.2.0/tests/test_stamp_item.py +261 -0
- snapmockit-1.2.0/tests/test_stamp_library.py +251 -0
- snapmockit-1.2.0/tests/test_status_bar.py +131 -0
- snapmockit-1.2.0/tests/test_storage_migration.py +312 -0
- snapmockit-1.2.0/tests/test_text_item_properties.py +146 -0
- snapmockit-1.2.0/tests/test_theme.py +283 -0
- snapmockit-1.2.0/tests/test_tool_options_bar.py +349 -0
- snapmockit-1.2.0/tests/test_tool_options_overflow.py +123 -0
- snapmockit-1.2.0/tests/test_tool_themes.py +413 -0
- snapmockit-1.2.0/tests/test_tool_themes_dialog.py +224 -0
- snapmockit-1.2.0/tests/test_tools/__init__.py +0 -0
- snapmockit-1.2.0/tests/test_tools/test_emoji_tool.py +439 -0
- snapmockit-1.2.0/tests/test_tools/test_highlight_tool.py +240 -0
- snapmockit-1.2.0/tests/test_tools/test_numbered_step_tool.py +446 -0
- snapmockit-1.2.0/tests/test_tools/test_rectangle_tool.py +12 -0
- snapmockit-1.2.0/tests/test_tools/test_select_tool.py +533 -0
- snapmockit-1.2.0/tests/test_tools/test_stamp_tool.py +462 -0
- snapmockit-1.2.0/tests/test_tools/test_tool_manager.py +53 -0
- snapmockit-1.2.0/tests/test_tools/test_zoom_tool.py +120 -0
- snapmockit-1.2.0/tests/test_transform_resize.py +208 -0
- snapmockit-1.2.0/tests/test_update_check.py +250 -0
- snapmockit-1.2.0/tests/test_vector_bar_presets.py +257 -0
- snapmockit-1.2.0/tests/test_vector_panel.py +196 -0
- snapmockit-1.2.0/tests/test_vector_properties.py +329 -0
- snapmockit-1.2.0/tests/test_welcome_panel.py +221 -0
- snapmockit-1.2.0/tests/test_window_layout.py +91 -0
- snapmockit-1.2.0/tests/test_window_management.py +164 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
|
|
7
|
+
# Distribution / packaging
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
*.egg-info/
|
|
11
|
+
*.egg
|
|
12
|
+
|
|
13
|
+
# Virtual environments
|
|
14
|
+
.venv/
|
|
15
|
+
|
|
16
|
+
# Type checking
|
|
17
|
+
.mypy_cache/
|
|
18
|
+
|
|
19
|
+
# Linting
|
|
20
|
+
.ruff_cache/
|
|
21
|
+
|
|
22
|
+
# Testing
|
|
23
|
+
.pytest_cache/
|
|
24
|
+
htmlcov/
|
|
25
|
+
.coverage
|
|
26
|
+
coverage.xml
|
|
27
|
+
|
|
28
|
+
# IDE
|
|
29
|
+
.vscode/
|
|
30
|
+
.idea/
|
|
31
|
+
*.swp
|
|
32
|
+
*.swo
|
|
33
|
+
|
|
34
|
+
# OS
|
|
35
|
+
.DS_Store
|
|
36
|
+
Thumbs.db
|
|
37
|
+
|
|
38
|
+
PRDs/.~lock.SnapMock-General-UI-PRD.docx#
|
|
39
|
+
|
|
40
|
+
*.snagx
|
|
41
|
+
|
|
42
|
+
Example Snag Files/2020-04-25_10-26-43.MP4
|
snapmockit-1.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Doug Bower
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: snapmockit
|
|
3
|
+
Version: 1.2.0
|
|
4
|
+
Summary: Snapmockit: open-source multi-platform screenshot annotation and UI mockup tool
|
|
5
|
+
Project-URL: Homepage, https://github.com/dbower44022/snapmockit
|
|
6
|
+
Project-URL: Documentation, https://github.com/dbower44022/snapmockit#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/dbower44022/snapmockit
|
|
8
|
+
Project-URL: Issues, https://github.com/dbower44022/snapmockit/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/dbower44022/snapmockit/releases
|
|
10
|
+
Author: Doug Bower
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: annotation,image editor,mockup,qt,screen capture,screenshot,snagit
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: Environment :: X11 Applications :: Qt
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: Operating System :: MacOS
|
|
18
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
19
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Topic :: Multimedia :: Graphics
|
|
25
|
+
Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture
|
|
26
|
+
Classifier: Topic :: Multimedia :: Graphics :: Editors :: Vector-Based
|
|
27
|
+
Requires-Python: >=3.12
|
|
28
|
+
Requires-Dist: numpy>=1.24
|
|
29
|
+
Requires-Dist: pillow>=10.0
|
|
30
|
+
Requires-Dist: psutil>=7.2.2
|
|
31
|
+
Requires-Dist: pyqt6>=6.5
|
|
32
|
+
Requires-Dist: send2trash>=2.1.0
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# Snapmockit
|
|
36
|
+
|
|
37
|
+
Snapmockit is an open-source screenshot annotation and user interface mockup tool for Linux, Windows, and macOS, written in Python with PyQt6. Capture a screen, a window, or a region; annotate it with shapes, arrows, text, callouts, highlights, blur, numbered steps, stamps, and emoji on layers; then export it as PNG, JPEG, SVG, or PDF, or save it as a project to come back to. It reads and writes Snagit's `.snagx` files.
|
|
38
|
+
|
|
39
|
+
Status: the application is complete against its nine product requirements documents (the `PRDs/` directory). Release 1.2.0 installs from the Python Package Index on any platform with Python 3.12 or later, and on Linux also ships as an AppImage and a Flatpak bundle. The Windows and macOS capture backends are written but have not yet been tested on those machines.
|
|
40
|
+
|
|
41
|
+
## Install from the Python Package Index (any platform)
|
|
42
|
+
|
|
43
|
+
With Python 3.12 or later, install Snapmockit as an application of its own with [pipx](https://pipx.pypa.io/) or [uv](https://docs.astral.sh/uv/):
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pipx install snapmockit
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
uv tool install snapmockit
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Either puts a `snapmockit` command on your path; start the application with it. `snapmockit --version` prints the version, and `snapmockit --capture full` takes a capture straight away and opens it. `pip install snapmockit` into a virtual environment works too.
|
|
54
|
+
|
|
55
|
+
To upgrade, use the tool you installed with: `pipx upgrade snapmockit`, `uv tool upgrade snapmockit`, or `pip install --upgrade snapmockit`. Help > Check for Updates names the right one when a new release is out.
|
|
56
|
+
|
|
57
|
+
On Linux, Qt needs the same system libraries the AppImage lists below, which every desktop installation has. The package installs no menu entry or icon; start it from a terminal or bind the command to a key. Windows and macOS installations run, but the screen capture backends for both are untested.
|
|
58
|
+
|
|
59
|
+
## Install on Linux
|
|
60
|
+
|
|
61
|
+
Snapmockit ships in two forms on Linux, both for x86_64: an **AppImage**, one file that carries its own Python and Qt, and a **Flatpak**, a 26 MB bundle that runs on the KDE runtime and in a sandbox. Neither needs a package manager or a password. The AppImage runs anywhere with glibc 2.34 or later (Ubuntu 22.04, Debian 12, Fedora 35, RHEL 9, and later); the Flatpak runs anywhere Flatpak does.
|
|
62
|
+
|
|
63
|
+
### The AppImage
|
|
64
|
+
|
|
65
|
+
1. Download `Snapmockit-<version>-x86_64.AppImage` from the latest release at https://github.com/dbower44022/snapmockit/releases.
|
|
66
|
+
2. Make it executable and run it. From a file manager, right-click the file, allow it to run as a program under Properties, and double-click it. From a terminal, with the file in your Downloads folder:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
chmod +x ~/Downloads/Snapmockit-*.AppImage
|
|
70
|
+
~/Downloads/Snapmockit-*.AppImage
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`--version` prints the version, `--capture full` takes a capture straight away and opens it, and a project file named on the command line opens. Help > Check for Updates in the application reads the latest release.
|
|
74
|
+
|
|
75
|
+
The file needs these libraries from the system, which every desktop installation has and a bare server may not: on Debian and Ubuntu, `libegl1 libgl1 libglib2.0-0 libdbus-1-3 libfontconfig1 libfreetype6 libxkbcommon0 libxkbcommon-x11-0 libxcb-cursor0 libxcb-icccm4 libxcb-keysyms1 libxcb-shape0 libxcb-xkb1 libxcb-render-util0 libxcb-image0 libx11-6 libxfixes3`, plus `libwayland-client0` and `xdg-desktop-portal` with a backend for your desktop under Wayland. Fonts, the colour emoji font included, come from the system. Settings live under `~/.config/Snapmockit`, presets and themes under `~/.config/snapmockit`, and the library at `~/Snapmockit/Library` unless you moved it; a first start moves what earlier builds kept under the SnapMock name and says so once.
|
|
76
|
+
|
|
77
|
+
### Putting it in the menu
|
|
78
|
+
|
|
79
|
+
The file carries its menu entry and icon but does not install them yet. To have Snapmockit in the desktop's main menu, copy the file to a fixed name, take the icons out of it, and write an entry that points at the copy:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
mkdir -p ~/Applications ~/.local/share/applications ~/.local/share/icons/hicolor/256x256/apps ~/.local/share/icons/hicolor/scalable/apps
|
|
83
|
+
cp ~/Downloads/Snapmockit-*.AppImage ~/Applications/Snapmockit.AppImage
|
|
84
|
+
(cd /tmp && ~/Applications/Snapmockit.AppImage --appimage-extract 'usr/share/icons/hicolor/*/apps/*')
|
|
85
|
+
cp /tmp/squashfs-root/usr/share/icons/hicolor/256x256/apps/io.github.dbower44022.snapmockit.png ~/.local/share/icons/hicolor/256x256/apps/
|
|
86
|
+
cp /tmp/squashfs-root/usr/share/icons/hicolor/scalable/apps/io.github.dbower44022.snapmockit.svg ~/.local/share/icons/hicolor/scalable/apps/
|
|
87
|
+
rm -rf /tmp/squashfs-root
|
|
88
|
+
cat > ~/.local/share/applications/io.github.dbower44022.snapmockit.desktop <<EOF
|
|
89
|
+
[Desktop Entry]
|
|
90
|
+
Type=Application
|
|
91
|
+
Name=Snapmockit
|
|
92
|
+
GenericName=Screenshot Annotation Tool
|
|
93
|
+
Comment=Capture, annotate, and mock up screenshots
|
|
94
|
+
Exec=$HOME/Applications/Snapmockit.AppImage %F
|
|
95
|
+
Icon=io.github.dbower44022.snapmockit
|
|
96
|
+
Terminal=false
|
|
97
|
+
Categories=Graphics;Utility;
|
|
98
|
+
MimeType=application/x-snapmockit-project;
|
|
99
|
+
Keywords=screenshot;capture;annotate;mockup;
|
|
100
|
+
StartupNotify=true
|
|
101
|
+
StartupWMClass=Snapmockit
|
|
102
|
+
EOF
|
|
103
|
+
update-desktop-database ~/.local/share/applications
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The entry appears at once; if its icon does not, the running desktop has not rescanned its icon folders yet, and a restart of the desktop shell (Ctrl+Alt+Esc on Cinnamon under X11) or a fresh login shows it. A later release replaces the copy at `~/Applications/Snapmockit.AppImage` and the entry stays. To remove it, delete the entry file, the two icon files, and the copy.
|
|
107
|
+
|
|
108
|
+
### The Flatpak
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
cd ~/Downloads
|
|
112
|
+
flatpak install --user Snapmockit-<version>-x86_64.flatpak
|
|
113
|
+
flatpak run io.github.dbower44022.snapmockit
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Download the bundle from the same release page. The first install offers to fetch the KDE runtime 6.11 from Flathub, which is most of what the application needs; the bundle itself is 26 MB because Qt is shared with every other KDE application on the machine. The desktop entry and the icon are installed with it, so Snapmockit is in the main menu at once, and `flatpak run io.github.dbower44022.snapmockit --capture full` is the command to bind to a key.
|
|
117
|
+
|
|
118
|
+
The sandbox reaches your whole home directory, the display, the graphics device, and the network, and nothing else. Its settings live under `~/.var/app/io.github.dbower44022.snapmockit/`, copied once from `~/.config/Snapmockit` on the first start if you have been running another form; the library is the same `~/Snapmockit/Library` both forms use. A bundle installed by hand does not update itself: a new version is a new download. Both forms can be installed at once, but they carry one application id, so the desktop shows one menu entry for Snapmockit.
|
|
119
|
+
|
|
120
|
+
### Other forms
|
|
121
|
+
|
|
122
|
+
Windows and macOS have no package of their own yet; install from the Python Package Index (above) or run from source. The capture backends for both are written but untested. The Flatpak is published as the bundle above and not on Flathub.
|
|
123
|
+
|
|
124
|
+
## Running from source
|
|
125
|
+
|
|
126
|
+
Requirements: Python 3.12 or later and [uv](https://docs.astral.sh/uv/).
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
git clone https://github.com/dbower44022/snapmockit.git
|
|
130
|
+
cd snapmockit
|
|
131
|
+
uv sync
|
|
132
|
+
uv run python -m snapmock
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
To take a capture straight from the command line and open it in the application:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
uv run python -m snapmock --capture full
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Building the packages
|
|
142
|
+
|
|
143
|
+
The release job builds both Linux forms from a clean runner on every tag, and both recipes run from a checkout with one command each, landing under `dist/`.
|
|
144
|
+
|
|
145
|
+
The AppImage:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
uv sync --group packaging
|
|
149
|
+
uv run --group packaging python packaging/appimage/build.py
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The Flatpak, which needs `flatpak-builder` (or Flathub's `org.flatpak.Builder`), the KDE runtime 6.11 with its SDK, the PyQt base application 6.11, and an SVG loader on the machine that builds:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
flatpak install flathub org.kde.Platform//6.11 org.kde.Sdk//6.11 \
|
|
156
|
+
com.riverbankcomputing.PyQt.BaseApp//6.11
|
|
157
|
+
uv run python packaging/flatpak/build.py
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
`packaging/flatpak/build.py --update-deps` regenerates the dependency module from `uv.lock` when a dependency changes.
|
|
161
|
+
|
|
162
|
+
## Developing
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
uv run pytest # the test suite, about 6 minutes; QT_QPA_PLATFORM=offscreen for a headless run
|
|
166
|
+
uv run ruff check . # lint
|
|
167
|
+
uv run ruff format . # format
|
|
168
|
+
uv run mypy snapmock # type check, strict
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
The product requirements documents under `PRDs/` are the single source of truth for behaviour; `docs/` holds the implementation notes and kickoff prompts each piece of work was built from; `CLAUDE.md` holds the working conventions.
|
|
172
|
+
|
|
173
|
+
## Reporting a problem
|
|
174
|
+
|
|
175
|
+
Open an issue at https://github.com/dbower44022/snapmockit/issues. Help > About > Copy Version Info in the application puts the version, the build date, and the platform on the clipboard for the report.
|
|
176
|
+
|
|
177
|
+
## Licence
|
|
178
|
+
|
|
179
|
+
MIT. Copyright (c) 2026 Doug Bower. Icons are [Tabler Icons](https://tabler.io/icons) by Paweł Kuna, MIT.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Snapmockit
|
|
2
|
+
|
|
3
|
+
Snapmockit is an open-source screenshot annotation and user interface mockup tool for Linux, Windows, and macOS, written in Python with PyQt6. Capture a screen, a window, or a region; annotate it with shapes, arrows, text, callouts, highlights, blur, numbered steps, stamps, and emoji on layers; then export it as PNG, JPEG, SVG, or PDF, or save it as a project to come back to. It reads and writes Snagit's `.snagx` files.
|
|
4
|
+
|
|
5
|
+
Status: the application is complete against its nine product requirements documents (the `PRDs/` directory). Release 1.2.0 installs from the Python Package Index on any platform with Python 3.12 or later, and on Linux also ships as an AppImage and a Flatpak bundle. The Windows and macOS capture backends are written but have not yet been tested on those machines.
|
|
6
|
+
|
|
7
|
+
## Install from the Python Package Index (any platform)
|
|
8
|
+
|
|
9
|
+
With Python 3.12 or later, install Snapmockit as an application of its own with [pipx](https://pipx.pypa.io/) or [uv](https://docs.astral.sh/uv/):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pipx install snapmockit
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
uv tool install snapmockit
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Either puts a `snapmockit` command on your path; start the application with it. `snapmockit --version` prints the version, and `snapmockit --capture full` takes a capture straight away and opens it. `pip install snapmockit` into a virtual environment works too.
|
|
20
|
+
|
|
21
|
+
To upgrade, use the tool you installed with: `pipx upgrade snapmockit`, `uv tool upgrade snapmockit`, or `pip install --upgrade snapmockit`. Help > Check for Updates names the right one when a new release is out.
|
|
22
|
+
|
|
23
|
+
On Linux, Qt needs the same system libraries the AppImage lists below, which every desktop installation has. The package installs no menu entry or icon; start it from a terminal or bind the command to a key. Windows and macOS installations run, but the screen capture backends for both are untested.
|
|
24
|
+
|
|
25
|
+
## Install on Linux
|
|
26
|
+
|
|
27
|
+
Snapmockit ships in two forms on Linux, both for x86_64: an **AppImage**, one file that carries its own Python and Qt, and a **Flatpak**, a 26 MB bundle that runs on the KDE runtime and in a sandbox. Neither needs a package manager or a password. The AppImage runs anywhere with glibc 2.34 or later (Ubuntu 22.04, Debian 12, Fedora 35, RHEL 9, and later); the Flatpak runs anywhere Flatpak does.
|
|
28
|
+
|
|
29
|
+
### The AppImage
|
|
30
|
+
|
|
31
|
+
1. Download `Snapmockit-<version>-x86_64.AppImage` from the latest release at https://github.com/dbower44022/snapmockit/releases.
|
|
32
|
+
2. Make it executable and run it. From a file manager, right-click the file, allow it to run as a program under Properties, and double-click it. From a terminal, with the file in your Downloads folder:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
chmod +x ~/Downloads/Snapmockit-*.AppImage
|
|
36
|
+
~/Downloads/Snapmockit-*.AppImage
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`--version` prints the version, `--capture full` takes a capture straight away and opens it, and a project file named on the command line opens. Help > Check for Updates in the application reads the latest release.
|
|
40
|
+
|
|
41
|
+
The file needs these libraries from the system, which every desktop installation has and a bare server may not: on Debian and Ubuntu, `libegl1 libgl1 libglib2.0-0 libdbus-1-3 libfontconfig1 libfreetype6 libxkbcommon0 libxkbcommon-x11-0 libxcb-cursor0 libxcb-icccm4 libxcb-keysyms1 libxcb-shape0 libxcb-xkb1 libxcb-render-util0 libxcb-image0 libx11-6 libxfixes3`, plus `libwayland-client0` and `xdg-desktop-portal` with a backend for your desktop under Wayland. Fonts, the colour emoji font included, come from the system. Settings live under `~/.config/Snapmockit`, presets and themes under `~/.config/snapmockit`, and the library at `~/Snapmockit/Library` unless you moved it; a first start moves what earlier builds kept under the SnapMock name and says so once.
|
|
42
|
+
|
|
43
|
+
### Putting it in the menu
|
|
44
|
+
|
|
45
|
+
The file carries its menu entry and icon but does not install them yet. To have Snapmockit in the desktop's main menu, copy the file to a fixed name, take the icons out of it, and write an entry that points at the copy:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
mkdir -p ~/Applications ~/.local/share/applications ~/.local/share/icons/hicolor/256x256/apps ~/.local/share/icons/hicolor/scalable/apps
|
|
49
|
+
cp ~/Downloads/Snapmockit-*.AppImage ~/Applications/Snapmockit.AppImage
|
|
50
|
+
(cd /tmp && ~/Applications/Snapmockit.AppImage --appimage-extract 'usr/share/icons/hicolor/*/apps/*')
|
|
51
|
+
cp /tmp/squashfs-root/usr/share/icons/hicolor/256x256/apps/io.github.dbower44022.snapmockit.png ~/.local/share/icons/hicolor/256x256/apps/
|
|
52
|
+
cp /tmp/squashfs-root/usr/share/icons/hicolor/scalable/apps/io.github.dbower44022.snapmockit.svg ~/.local/share/icons/hicolor/scalable/apps/
|
|
53
|
+
rm -rf /tmp/squashfs-root
|
|
54
|
+
cat > ~/.local/share/applications/io.github.dbower44022.snapmockit.desktop <<EOF
|
|
55
|
+
[Desktop Entry]
|
|
56
|
+
Type=Application
|
|
57
|
+
Name=Snapmockit
|
|
58
|
+
GenericName=Screenshot Annotation Tool
|
|
59
|
+
Comment=Capture, annotate, and mock up screenshots
|
|
60
|
+
Exec=$HOME/Applications/Snapmockit.AppImage %F
|
|
61
|
+
Icon=io.github.dbower44022.snapmockit
|
|
62
|
+
Terminal=false
|
|
63
|
+
Categories=Graphics;Utility;
|
|
64
|
+
MimeType=application/x-snapmockit-project;
|
|
65
|
+
Keywords=screenshot;capture;annotate;mockup;
|
|
66
|
+
StartupNotify=true
|
|
67
|
+
StartupWMClass=Snapmockit
|
|
68
|
+
EOF
|
|
69
|
+
update-desktop-database ~/.local/share/applications
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The entry appears at once; if its icon does not, the running desktop has not rescanned its icon folders yet, and a restart of the desktop shell (Ctrl+Alt+Esc on Cinnamon under X11) or a fresh login shows it. A later release replaces the copy at `~/Applications/Snapmockit.AppImage` and the entry stays. To remove it, delete the entry file, the two icon files, and the copy.
|
|
73
|
+
|
|
74
|
+
### The Flatpak
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
cd ~/Downloads
|
|
78
|
+
flatpak install --user Snapmockit-<version>-x86_64.flatpak
|
|
79
|
+
flatpak run io.github.dbower44022.snapmockit
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Download the bundle from the same release page. The first install offers to fetch the KDE runtime 6.11 from Flathub, which is most of what the application needs; the bundle itself is 26 MB because Qt is shared with every other KDE application on the machine. The desktop entry and the icon are installed with it, so Snapmockit is in the main menu at once, and `flatpak run io.github.dbower44022.snapmockit --capture full` is the command to bind to a key.
|
|
83
|
+
|
|
84
|
+
The sandbox reaches your whole home directory, the display, the graphics device, and the network, and nothing else. Its settings live under `~/.var/app/io.github.dbower44022.snapmockit/`, copied once from `~/.config/Snapmockit` on the first start if you have been running another form; the library is the same `~/Snapmockit/Library` both forms use. A bundle installed by hand does not update itself: a new version is a new download. Both forms can be installed at once, but they carry one application id, so the desktop shows one menu entry for Snapmockit.
|
|
85
|
+
|
|
86
|
+
### Other forms
|
|
87
|
+
|
|
88
|
+
Windows and macOS have no package of their own yet; install from the Python Package Index (above) or run from source. The capture backends for both are written but untested. The Flatpak is published as the bundle above and not on Flathub.
|
|
89
|
+
|
|
90
|
+
## Running from source
|
|
91
|
+
|
|
92
|
+
Requirements: Python 3.12 or later and [uv](https://docs.astral.sh/uv/).
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
git clone https://github.com/dbower44022/snapmockit.git
|
|
96
|
+
cd snapmockit
|
|
97
|
+
uv sync
|
|
98
|
+
uv run python -m snapmock
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
To take a capture straight from the command line and open it in the application:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
uv run python -m snapmock --capture full
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Building the packages
|
|
108
|
+
|
|
109
|
+
The release job builds both Linux forms from a clean runner on every tag, and both recipes run from a checkout with one command each, landing under `dist/`.
|
|
110
|
+
|
|
111
|
+
The AppImage:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
uv sync --group packaging
|
|
115
|
+
uv run --group packaging python packaging/appimage/build.py
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The Flatpak, which needs `flatpak-builder` (or Flathub's `org.flatpak.Builder`), the KDE runtime 6.11 with its SDK, the PyQt base application 6.11, and an SVG loader on the machine that builds:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
flatpak install flathub org.kde.Platform//6.11 org.kde.Sdk//6.11 \
|
|
122
|
+
com.riverbankcomputing.PyQt.BaseApp//6.11
|
|
123
|
+
uv run python packaging/flatpak/build.py
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`packaging/flatpak/build.py --update-deps` regenerates the dependency module from `uv.lock` when a dependency changes.
|
|
127
|
+
|
|
128
|
+
## Developing
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
uv run pytest # the test suite, about 6 minutes; QT_QPA_PLATFORM=offscreen for a headless run
|
|
132
|
+
uv run ruff check . # lint
|
|
133
|
+
uv run ruff format . # format
|
|
134
|
+
uv run mypy snapmock # type check, strict
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The product requirements documents under `PRDs/` are the single source of truth for behaviour; `docs/` holds the implementation notes and kickoff prompts each piece of work was built from; `CLAUDE.md` holds the working conventions.
|
|
138
|
+
|
|
139
|
+
## Reporting a problem
|
|
140
|
+
|
|
141
|
+
Open an issue at https://github.com/dbower44022/snapmockit/issues. Help > About > Copy Version Info in the application puts the version, the build date, and the platform on the clipboard for the report.
|
|
142
|
+
|
|
143
|
+
## Licence
|
|
144
|
+
|
|
145
|
+
MIT. Copyright (c) 2026 Doug Bower. Icons are [Tabler Icons](https://tabler.io/icons) by Paweł Kuna, MIT.
|