Port ItemSense to iOS
This commit is contained in:
41
python/specs/001-core-ui-camera.md
Normal file
41
python/specs/001-core-ui-camera.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user