Add the board, and finish v1.1 (stage 9e)
The board is the user's design: the document as lists and blocks, the
way Scratch nests blocks inside a loop. Each node without a parent (the
root, then each loose node) is a column with its title in the top border;
its children are cards in it, one under the other; a card with children
on show wraps them in a C: a joint at its bottom left, a bracket down the
left two cells further in, and a foot closing it. Blocks nest as deep as
the tree does. The columns by tag or color the first design had are
dropped (the user's pick), and :board takes no arguments any more.
j and k go down and up a column in reading order, into the blocks; h and
l go to the column beside, onto the card nearest the cursor's height.
Titles are typed right in their cards, and visual mode selects in
reading order as the outline does. <Space>vb or :board shows it.
Move mode (M, the user's pick) moves the card through the tree: h and l
to the end of the column beside, j and k past the cards around it, into
an open block and out of one at its end. A column's own node trades
places with the loose column beside it; the root's column stays first.
A drag does the same with the mouse: dropped on a card it goes after it,
on a block's card into it, on a column at its end.
The fallback message for a key a view ignores now names the view ("does
nothing in the board view"). The version goes to 1.1.0: stage 9 is done.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
893edbda9f
commit
3716919db3
20 files changed
+946
-50
No files matched your search
+3
-1
@@ -66,6 +66,7 @@ use crate::input::mouse::MouseReader;
|
||||
use crate::model::DocUid;
|
||||
use crate::storage::memory::Memory;
|
||||
use crate::ui::theme::Theme;
|
||||
use crate::view::board::BoardView;
|
||||
use crate::view::canvas::{Camera, CanvasView};
|
||||
use crate::view::note::NoteView;
|
||||
use crate::view::outline::OutlineView;
|
||||
@@ -183,7 +184,8 @@ impl Pane {
|
||||
let mut view: Box<dyn View> = match kind {
|
||||
ViewKind::Outline => Box::new(OutlineView::new()),
|
||||
ViewKind::Note => Box::new(NoteView::new()),
|
||||
ViewKind::Canvas | ViewKind::Board => Box::new(CanvasView::new()),
|
||||
ViewKind::Board => Box::new(BoardView::new()),
|
||||
ViewKind::Canvas => Box::new(CanvasView::new()),
|
||||
};
|
||||
if let Some(camera) = camera {
|
||||
view.set_camera(camera);
|
||||
|
||||
Reference in new issue
Block a user