Manual: nested collections, and the ghost drawn as it should be
Benchmarks / CPU and I/O (per commit) (push) Failing after 6m16s
Benchmarks / Frame budget (on demand) (push) Skipped
Build and test / Desktop (Linux) (push) Failing after 42s
🐳 Android image / Build and push (push) Successful in 1s
Build and test / android-image (push) Successful in 1s
🐳 Windows image / Build and push (push) Successful in 1s
Build and test / windows-image (push) Successful in 2s
Build and test / Layer separation (push) Successful in 26s
Traceability / Requirement traces (push) Failing after 38s
Build and test / Android (aarch64) (push) Failing after 2m20s
Build and test / Windows (x86_64, cross) (push) Failing after 3m3s
Benchmarks / CPU and I/O (per commit) (push) Failing after 6m16s
Benchmarks / Frame budget (on demand) (push) Skipped
Build and test / Desktop (Linux) (push) Failing after 42s
🐳 Android image / Build and push (push) Successful in 1s
Build and test / android-image (push) Successful in 1s
🐳 Windows image / Build and push (push) Successful in 1s
Build and test / windows-image (push) Successful in 2s
Build and test / Layer separation (push) Successful in 26s
Traceability / Requirement traces (push) Failing after 38s
Build and test / Android (aarch64) (push) Failing after 2m20s
Build and test / Windows (x86_64, cross) (push) Failing after 3m3s
A scene that makes a parent, nests two collections in it by drag and by the menu, files frames into a child and opens the parent to see it count both; stills of the tree and of the menu. The collections recording is re-made now that the bitmap under the cursor is the photograph. drive.py grows a multi-leg drag: a diagonal with much vertical in it is taken by the grid's Flickable as a scroll before the DragArea can claim it, so a drag to the sidebar goes sideways first.
This commit is contained in:
@@ -74,6 +74,18 @@ photograph can be in several, and the badge on its cell counts them.
|
||||
|
||||

|
||||
|
||||
Collections nest. Drag one onto another to put it inside; `+` with a
|
||||
collection selected — or `New collection inside` from its menu — makes a
|
||||
child. A parent shows everything its children hold, and its count says so.
|
||||
Right-click a row (hold it, on a tablet) for the menu: rename, nest,
|
||||
move back to the top level, keep it offline, delete.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Developing a photograph
|
||||
|
||||
Click a thumbnail to open it. The column on the right is every adjustment;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -122,6 +122,26 @@ def drag(x1, y1, x2, y2, steps=20):
|
||||
x('mouseup', 1)
|
||||
|
||||
|
||||
def drag_path(points, steps=20):
|
||||
"""A drag through several points: out of the grid sideways first, then
|
||||
to the row. A diagonal with much vertical in it is taken by the grid's
|
||||
Flickable as a scroll before the DragArea can claim it."""
|
||||
x('windowfocus', '--sync', win(), check=False)
|
||||
(x1, y1), rest = points[0], points[1:]
|
||||
move(x1, y1)
|
||||
time.sleep(0.15)
|
||||
x('mousedown', 1)
|
||||
time.sleep(0.15)
|
||||
for x2, y2 in rest:
|
||||
for i in range(1, int(steps) + 1):
|
||||
t = i / int(steps)
|
||||
move(int(x1 + (x2 - x1) * t), int(y1 + (y2 - y1) * t))
|
||||
time.sleep(0.03)
|
||||
x1, y1 = x2, y2
|
||||
time.sleep(0.4)
|
||||
x('mouseup', 1)
|
||||
|
||||
|
||||
def rec_start(out):
|
||||
size = x('getwindowgeometry', win()).split('Geometry: ')[1].strip()
|
||||
ox, oy = geometry()
|
||||
|
||||
+40
-4
@@ -151,9 +151,21 @@ def library_keywords():
|
||||
dr.click(*SELECT); pause(0.5) # leave selecting
|
||||
|
||||
|
||||
def new_collection(name):
|
||||
# `+` makes a collection inside whichever row is selected, so select the
|
||||
# top first for a top-level one.
|
||||
dr.click(60, 48); pause(0.5)
|
||||
dr.click(212, 22); pause(0.4)
|
||||
dr.x('type', '--delay', 90, name); dr.x('key', 'Return'); pause(1.2)
|
||||
|
||||
|
||||
# The menu a right-click on a collection opens, at 1600×1100.
|
||||
MENU = {'rename': (800, 496), 'inside': (800, 536), 'top': (800, 576),
|
||||
'offline': (800, 616), 'delete': (800, 669), 'cancel': (800, 709)}
|
||||
|
||||
|
||||
def library_collections():
|
||||
dr.click(212, 22); pause(0.3) # + in the collections header
|
||||
dr.x('type', '--delay', 90, 'Alps'); dr.x('key', 'Return'); pause(1.2)
|
||||
new_collection('Alps')
|
||||
rec('library-collections')
|
||||
dr.drag(*CELL_PANO_FIRST, *COLLECTION_ROW, 40); pause(1.5)
|
||||
dr.click(*SELECT); pause(0.5)
|
||||
@@ -163,10 +175,34 @@ def library_collections():
|
||||
dr.click(*SELECT); pause(0.5)
|
||||
dr.click(*COLLECTION_ROW); pause(1.5)
|
||||
cut()
|
||||
shot('library-collection')
|
||||
dr.click(60, 48); pause(1.2) # All photographs
|
||||
|
||||
|
||||
def library_nesting():
|
||||
# Continues from library_collections: "Alps" exists with photographs in
|
||||
# it. Make "Trips", drag Alps into it, make "New York" inside Trips from
|
||||
# the menu, file frames there, then open Trips to see it count both.
|
||||
new_collection('Trips')
|
||||
rec('library-nesting')
|
||||
pause(0.5)
|
||||
dr.drag(60, 90, 60, 128, 30); pause(1.5) # Alps onto Trips
|
||||
dr.click(60, 90, 3); pause(1.2) # the menu, on Trips
|
||||
dr.click(*MENU['inside']); pause(0.6)
|
||||
dr.x('type', '--delay', 90, 'New York'); dr.x('key', 'Return'); pause(1.2)
|
||||
dr.click(*SELECT); pause(0.5)
|
||||
dr.click(963, 525); pause(0.3)
|
||||
dr.x('keydown', 'shift'); dr.click(1502, 525); dr.x('keyup', 'shift'); pause(0.8)
|
||||
dr.drag_path([(1143, 525), (200, 525), (90, 146)], 25); pause(1.5) # four frames into New York
|
||||
dr.click(*SELECT); pause(0.5)
|
||||
dr.click(60, 90); pause(1.5) # Trips: both children
|
||||
cut()
|
||||
shot('library-nesting')
|
||||
dr.click(90, 146, 3); pause(1.2) # the menu, on New York
|
||||
shot('library-collection-menu')
|
||||
dr.click(*MENU['cancel']); pause(0.8)
|
||||
dr.click(60, 48); pause(1.2)
|
||||
|
||||
|
||||
# --- develop ----------------------------------------------------------------
|
||||
def develop():
|
||||
open_chinatown()
|
||||
@@ -309,7 +345,7 @@ def settings():
|
||||
|
||||
ALL = [
|
||||
'library', 'library_rating', 'library_timeline', 'library_thumbsize',
|
||||
'library_selection', 'library_keywords', 'library_collections',
|
||||
'library_selection', 'library_keywords', 'library_collections', 'library_nesting',
|
||||
'develop', 'develop_groups', 'develop_light', 'develop_zoom', 'develop_wb',
|
||||
'compose', 'local_segment', 'local_paint', 'local_done', 'repair', 'film',
|
||||
'presets', 'panorama', 'settings',
|
||||
|
||||
Reference in New Issue
Block a user