42 lines
1.4 KiB
Markdown
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.
|