Files
ItemSense/python/specs/001-core-ui-camera.md
2026-01-21 15:41:18 -05:00

42 lines
1.4 KiB
Markdown

# Feature: Core UI and Camera Feed (PyObjC)
## Status: COMPLETE
## Description
Create the main application window using PyObjC (AppKit) and display a live camera feed. This ensures a native macOS look and feel.
## Requirements
1. **App & Window Setup (AppKit)**:
- Initialize `NSApplication`.
- Create a main `NSWindow` titled "ItemSense".
- Size: 800x600 (resizable).
- Window should center on screen.
2. **UI Layout**:
- Use `NSStackView` (vertical) or manual constraints to layout:
- Top: Video Feed (`NSImageView`).
- Bottom: "Capture" button (`NSButton`).
3. **Camera Feed**:
- Use `opencv-python` to capture frames from webcam (index 0).
- Convert frames (`cv2` BGR -> RGB) to `NSImage/CGImage`.
- Update the `NSImageView` at ~30 FPS using a timer (`NSTimer` or equivalent app loop integration).
4. **Capture Button**:
- Standard macOS Push Button.
- Label: "Capture".
- Action: Print "Capture clicked" to console.
5. **Lifecycle**:
- Ensure `Cmd+Q` works.
- Ensure closing the window terminates the app (or at least the `applicationShouldTerminateAfterLastWindowClosed:` delegate method returns True).
## Acceptance Criteria
- [ ] App launches with a native macOS window "ItemSense".
- [ ] Live camera feed is visible in the view.
- [ ] "Capture" button is visible at the bottom.
- [ ] Clicking "Capture" prints to console.
- [ ] App exits cleanly on window close or Cmd+Q.