Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions gear/cameras.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,67 @@
[
{
"id": "cam-leica-ma",
"make": "Leica",
"model": "M-A",
"displayName": "Leica M-A",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m2",
"make": "Leica",
"model": "M2",
"displayName": "Leica M2",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m3",
"make": "Leica",
"model": "M3",
"displayName": "Leica M3",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m4",
"make": "Leica",
"model": "M4",
"displayName": "Leica M4",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m42",
"make": "Leica",
"model": "M4-2",
"displayName": "Leica M4-2",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m4p",
"make": "Leica",
"model": "M4-P",
"displayName": "Leica M4-P",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m5",
"make": "Leica",
"model": "M5",
"displayName": "Leica M5",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-m6",
"make": "Leica",
"model": "M6",
"displayName": "Leica M6",
"notes": "35mm rangefinder."
},
{
"id": "cam-leica-mp",
"make": "Leica",
"model": "MP",
"displayName": "Leica MP",
"notes": "35mm rangefinder."
},
{
"id": "cam-canon-ae1p",
"make": "Canon",
Expand Down
139 changes: 139 additions & 0 deletions gear/film_stocks.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,95 @@
"format": "35mm",
"colorType": "B&W Negative"
},
{
"id": "film-fp4-125",
"displayName": "Ilford FP4 Plus",
"manufacturer": "Ilford",
"stockName": "FP4 Plus 125",
"iso": 125,
"format": "35mm",
"colorType": "B&W Negative"
},
{
"id": "film-delta-100",
"displayName": "Ilford Delta 100",
"manufacturer": "Ilford",
"stockName": "Delta 100 Professional",
"iso": 100,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Core-shell tabular grain, fine grain and high sharpness."
},
{
"id": "film-delta-400",
"displayName": "Ilford Delta 400",
"manufacturer": "Ilford",
"stockName": "Delta 400 Professional",
"iso": 400,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Core-shell tabular grain, fine grain and high sharpness."
},
{
"id": "film-delta-3200",
"displayName": "Ilford Delta 3200",
"manufacturer": "Ilford",
"stockName": "Delta 3200 Professional",
"iso": 3200,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "True speed ~1000, designed to be push processed."
},
{
"id": "film-panf-50",
"displayName": "Ilford Pan F Plus",
"manufacturer": "Ilford",
"stockName": "Pan F Plus 50",
"iso": 50,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Ultra-fine grain, slow speed."
},
{
"id": "film-xp2-400",
"displayName": "Ilford XP2 Super",
"manufacturer": "Ilford",
"stockName": "XP2 Super 400",
"iso": 400,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Chromogenic B&W on a C-41 process, wide exposure latitude."
},
{
"id": "film-sfx-200",
"displayName": "Ilford SFX 200",
"manufacturer": "Ilford",
"stockName": "SFX 200",
"iso": 200,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Extended red sensitivity to ~740nm, near-infrared effects with a red filter."
},
{
"id": "film-kentmere-100",
"displayName": "Kentmere 100",
"manufacturer": "Kentmere",
"stockName": "Kentmere 100",
"iso": 100,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Budget B&W, made by Ilford."
},
{
"id": "film-kentmere-400",
"displayName": "Kentmere 400",
"manufacturer": "Kentmere",
"stockName": "Kentmere 400",
"iso": 400,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Budget B&W, made by Ilford."
},
{
"id": "film-ektachrome-e100",
"displayName": "Kodak Ektachrome E100",
Expand All @@ -63,5 +152,55 @@
"format": "35mm",
"colorType": "ColorNegative",
"notes": "Tungsten-balanced color negative with characteristic halation."
},
{
"id": "film-vision3-250d-remjet",
"displayName": "Kodak Vision3 250D",
"manufacturer": "Kodak",
"stockName": "Vision3 250D",
"iso": 250,
"format": "35mm",
"colorType": "ColorNegative",
"notes": "Motion picture stock, daylight balanced. With remjet layer."
},
{
"id": "film-vision3-250d-ahu",
"displayName": "Kodak Vision3 250D AHU",
"manufacturer": "Kodak",
"stockName": "Vision3 250D AHU",
"iso": 250,
"format": "35mm",
"colorType": "ColorNegative",
"notes": "Motion picture stock, daylight balanced."
},
{
"id": "film-vision3-500t-remjet",
"displayName": "Kodak Vision3 500T",
"manufacturer": "Kodak",
"stockName": "Vision3 500T",
"iso": 500,
"format": "35mm",
"colorType": "ColorNegative",
"notes": "Motion picture stock, tungsten balanced. With remjet layer"
},
{
"id": "film-vision3-500t-ahu",
"displayName": "Kodak Vision3 500T AHU",
"manufacturer": "Kodak",
"stockName": "Vision3 500T AHU",
"iso": 500,
"format": "35mm",
"colorType": "ColorNegative",
"notes": "Motion picture stock, tungsten balanced."
},
{
"id": "film-double-x-250",
"displayName": "Kodak Double-X",
"manufacturer": "Kodak",
"stockName": "Double-X 250",
"iso": 250,
"format": "35mm",
"colorType": "B&W Negative",
"notes": "Motion picture panchromatic negative."
}
]
9 changes: 8 additions & 1 deletion gear/gear_presets.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,18 @@
"lensId": "lens-canon-fd-50-1.4",
"filmStockId": "film-portra-400"
},
{
"id": "preset-lma-s50-vision500t-ahu",
"displayName": "M-A / 50 f/2.0 / 500T AHU",
"cameraId": "cam-leica-ma",
"lensId": "lens-leica-summicron-50-2.0",
"filmStockId": "film-vision3-500t-ahu"
},
{
"id": "preset-fm2-50-trix",
"displayName": "FM2 / Nikkor 50 f/1.8 / Tri-X 400",
"cameraId": "cam-nikon-fm2",
"lensId": "lens-nikkor-50-1.8",
"lensId": "lens-leica-summicron-50-2.0",
"filmStockId": "film-tri-x-400"
}
]
24 changes: 24 additions & 0 deletions gear/lenses.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,30 @@
"focalLength": 28,
"maxAperture": 2.8
},
{
"id": "lens-leica-summicron-28-2.0",
"displayName": "Leica Summicron 28mm f/2.0",
"lensModel": "Summicron 28mm f/2 ASPH",
"make": "Leica",
"focalLength": 28,
"maxAperture": 2.0
},
{
"id": "lens-leica-summilux-50-1.4",
"displayName": "Leica Summilux 50mm f/1.4",
"lensModel": "Summilux 50mm f/1.4 ASPH",
"make": "Leica",
"focalLength": 50,
"maxAperture": 1.4
},
{
"id": "lens-leica-summicron-50-2.0",
"displayName": "Leica Summicron 50mm f/2.0",
"lensModel": "Summicron 50mm f/2.0",
"make": "Leica",
"focalLength": 50,
"maxAperture": 2.0
},
{
"id": "lens-nikkor-50-1.8",
"displayName": "Nikkor 50mm f/1.8 AI-S",
Expand Down
4 changes: 2 additions & 2 deletions negpy/desktop/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ def _bootstrap_environment() -> None:
]
for d in dirs:
os.makedirs(d, exist_ok=True)
CrosstalkProfiles.seed_example()
GearProfiles.seed_example()
CrosstalkProfiles.ensure_user_dir()
GearProfiles.ensure_user_dir()


def main() -> None:
Expand Down
11 changes: 10 additions & 1 deletion negpy/desktop/view/widgets/gear_library_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,10 +290,18 @@ def _refresh_preset_combos(self) -> None:
def _on_item_changed(self, row: int) -> None:
if row < 0 or row >= len(self._current_items()):
self._selected_idx = -1
self._set_form_editable(True)
self._clear_form()
return
self._selected_idx = row
self._populate_form(self._current_items()[row])
item = self._current_items()[row]
self._set_form_editable(not item.is_bundled)
self._populate_form(item)

def _set_form_editable(self, enabled: bool) -> None:
for _label, widget in self._form_rows.values():
widget.setEnabled(enabled)
self.del_btn.setEnabled(enabled)

def _populate_form(self, item) -> None:
self._updating = True
Expand Down Expand Up @@ -421,6 +429,7 @@ def _duplicate_item(self) -> None:
from negpy.features.metadata.gear_models import _new_id

dup.id = _new_id()
dup.is_bundled = False
items.append(dup)
self._set_current_items(items)
GearProfiles.save_library(self._library)
Expand Down
4 changes: 4 additions & 0 deletions negpy/features/metadata/gear_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ class Camera:
display_name: str = ""
serial_number: str = ""
notes: str = ""
is_bundled: bool = False

@property
def resolved_display_name(self) -> str:
Expand Down Expand Up @@ -108,6 +109,7 @@ class Lens:
max_aperture: Optional[float] = None
serial_number: str = ""
notes: str = ""
is_bundled: bool = False

@property
def resolved_display_name(self) -> str:
Expand Down Expand Up @@ -158,6 +160,7 @@ class FilmStock:
format: FilmFormat = FilmFormat.FORMAT_35MM
color_type: FilmColorType = FilmColorType.COLOR_NEGATIVE
notes: str = ""
is_bundled: bool = False

@property
def resolved_display_name(self) -> str:
Expand Down Expand Up @@ -219,6 +222,7 @@ class GearPreset:
lens_id: str = ""
film_stock_id: str = ""
notes: str = ""
is_bundled: bool = False

def to_dict(self) -> dict[str, Any]:
return {
Expand Down
Loading
Loading