-
Notifications
You must be signed in to change notification settings - Fork 9
/
TODO
91 lines (79 loc) · 4.88 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Project todo list
=================
The purpose of this document is to keep track of short-term plans (up to 6 months ahead).
As stuff is completed or plans change the list should be updated.
* Transfer plugin should get preference widgets from collections (e.g. specify import location, metadata handling, privacy etc)
* All collections should have an offline member and when offline turn off GUI that needs read or write access to the store
* Simplify collection initialization/open/close (make interface more uniform)
* The OSD delete button becomes a toggle. Delete is committed along with metadata changes (requires the collection to be online)
* Each collection should specify the metadata that is editable and/or provide the editing widgets
* Support GEO (GPS) info in flickr
* Drag to/from desktop or other apps needs more support
* Add toolbar button options to scan for updates or fully reimport the collection
* Logging pane in the Transfer plugin
* Don't allow duplicates of a tag in an image
* Collections need icons on the start page
* Bug fix: count of selected items sometimes get out of sync
* Move collection handling (scanning/updating/filter/operations) to a separate process
* Client/Server model
* GUI = client, requests images from server
* Server maintains the index and datastore of underlying images in a collection
* Server process watches for changes to images and updates index/datastore appropriately, notifying GUI and getting user feedback as necessary
* Optional "always on" server (tracks all changes to images in monitored
collections even while picty client is not running)
* This is hard because...
* Passing data between processes is slow
* High priority tasks need to interrupt with low latency
* Have to keep many "lists" of images:
* Master list: server side, keeps track of: uid, metadata, thumbnail info, full image
* View: list known to both server and client, each item in the view is a tuple of (sortkey,uid)
* A solution is to move the job handler to the main thread, call the jobs in a separate process and use
gobject signals (and/or dbus) to handle notifications from the jobs
* The job handler assembles the information needed for the job and writes changes back to the items/view/collection
* The gobject loop supports callbacks
* Avoids soem nasty thread synchroniization issues by enforcing safer data manipulation
* Only do the intensive work on a separate process
* E.g. for a write metadata request
1. create a list of changed items on the main thread
2. dispatch the intructions to write changes to the list of items as a batch (or with single requests)
* Need a locking mechanism: user should not be able to modify items that are being modified by background processes
* Need a cancellation mechanism: any job should be interruptable
* Plugins will now get their update messages on the main thread instead of on a worker thread (plugin IPC too much of a mess)
* Overhaul image class, metadata and image handling
* track file attributes (file size, image dimensions, mtime, presence of thumbnails)
* mimetype/store specific handler for metadata read/write and image processing
* must be able to handle cloud-based collections
* lossless image manipulation options (keep record of changes, and a cached version
of the altered image)
* support for XMP sidecars (for images that don't support metadata read/write)
* XMP sidecar policies
1. Copy all metadata from source image/Store only changes from the source image
2. Use for images that don't support write/Use for all images
* XMP
* Update the browser
* be more consistent with user theme (colors, look and feel)
* size and align text better
* improve keyboard navigation
* add suport for horizontal (instead of vertical) scrolling
* General UI
* Padding and alignment tweaks to most of the dialog areas
* Keyboard customization
* Progress bar too distracting, messages don't always disapper (e.g. job cancelled)
and messages not always useful
* Image viewer enhancements
* Implement the image viewer as a gtk.Container that can dynamically place/size/hide gtk widgets
* Example use: when mouse over right side of image show a zoom slider and combo box
* Keyboard toggles for displaying toolbar
* Plugins
* New plugins
* Loupe tool in the image viewer
* Histogram
* Exposure tweaks
* More flexible camera import (folder naming scheme)
* Managing Sets/Albums for flickr/picasa uploads
* Overhaul thumbnail support (e.g. allow user to store thumbs in custom
cache location, support tumbler, use embedded image thumbnails and
fallback to manual creation as necessary)
* Delete thumbnails when image is deleted (add option to scan and delete redundant thumbnails)
* Copy cached thumbnails on transfer (avoids downloading/recreating)
picty (c) 2011 Damien Moore