feat(tools): rnote-style toolbar core writing batch
Some checks failed
CI / Windows build (push) Has been cancelled
Some checks failed
CI / Windows build (push) Has been cancelled
Replace the ad-hoc tool palette with a shared tool system (EditorToolKind) across the PDF, note and slide editors, and add the core writing tools. - Multiple brushes, each remembering its OWN color (rnote-style): selecting a brush restores its color, changing color updates only that brush, and each brush button shows its current color. - Select tool: tap-select a committed stroke, drag to move it, delete it — persisted and undoable. - Shape tool: line / rectangle / ellipse / arrow, drawn with a live preview and committed as generated PenStrokes (shape_geometry.dart) so they reuse stroke rendering, erase, persistence and undo. - Highlighter + eraser fold into the same tool system. Text/bookmark/search+OCR/backgrounds/Windows-Ink are later batches (TODO). Brush opacity still deferred. analyze clean, 302 tests.
This commit is contained in:
@@ -51,6 +51,14 @@
|
||||
"brushBallpoint": "Ballpoint",
|
||||
"brushPencil": "Pencil",
|
||||
"brushHighlighter": "Highlighter",
|
||||
"toolSelect": "Select",
|
||||
"toolShape": "Shape",
|
||||
"shapePicker": "Shape",
|
||||
"shapeLine": "Line",
|
||||
"shapeRectangle": "Rectangle",
|
||||
"shapeEllipse": "Ellipse",
|
||||
"shapeArrow": "Arrow",
|
||||
"actionDeleteSelection": "Delete selection",
|
||||
"actionUndo": "Undo",
|
||||
"actionRedo": "Redo",
|
||||
"fingerDrawingOn": "Finger drawing ON",
|
||||
|
||||
@@ -350,6 +350,54 @@ abstract class AppLocalizations {
|
||||
/// **'Highlighter'**
|
||||
String get brushHighlighter;
|
||||
|
||||
/// No description provided for @toolSelect.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Select'**
|
||||
String get toolSelect;
|
||||
|
||||
/// No description provided for @toolShape.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Shape'**
|
||||
String get toolShape;
|
||||
|
||||
/// No description provided for @shapePicker.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Shape'**
|
||||
String get shapePicker;
|
||||
|
||||
/// No description provided for @shapeLine.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Line'**
|
||||
String get shapeLine;
|
||||
|
||||
/// No description provided for @shapeRectangle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Rectangle'**
|
||||
String get shapeRectangle;
|
||||
|
||||
/// No description provided for @shapeEllipse.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ellipse'**
|
||||
String get shapeEllipse;
|
||||
|
||||
/// No description provided for @shapeArrow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Arrow'**
|
||||
String get shapeArrow;
|
||||
|
||||
/// No description provided for @actionDeleteSelection.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete selection'**
|
||||
String get actionDeleteSelection;
|
||||
|
||||
/// No description provided for @actionUndo.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -140,6 +140,30 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
@override
|
||||
String get brushHighlighter => 'Highlighter';
|
||||
|
||||
@override
|
||||
String get toolSelect => 'Select';
|
||||
|
||||
@override
|
||||
String get toolShape => 'Shape';
|
||||
|
||||
@override
|
||||
String get shapePicker => 'Shape';
|
||||
|
||||
@override
|
||||
String get shapeLine => 'Line';
|
||||
|
||||
@override
|
||||
String get shapeRectangle => 'Rectangle';
|
||||
|
||||
@override
|
||||
String get shapeEllipse => 'Ellipse';
|
||||
|
||||
@override
|
||||
String get shapeArrow => 'Arrow';
|
||||
|
||||
@override
|
||||
String get actionDeleteSelection => 'Delete selection';
|
||||
|
||||
@override
|
||||
String get actionUndo => 'Undo';
|
||||
|
||||
|
||||
@@ -140,6 +140,30 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
@override
|
||||
String get brushHighlighter => '荧光笔';
|
||||
|
||||
@override
|
||||
String get toolSelect => '选择';
|
||||
|
||||
@override
|
||||
String get toolShape => '形状';
|
||||
|
||||
@override
|
||||
String get shapePicker => '形状';
|
||||
|
||||
@override
|
||||
String get shapeLine => '直线';
|
||||
|
||||
@override
|
||||
String get shapeRectangle => '矩形';
|
||||
|
||||
@override
|
||||
String get shapeEllipse => '椭圆';
|
||||
|
||||
@override
|
||||
String get shapeArrow => '箭头';
|
||||
|
||||
@override
|
||||
String get actionDeleteSelection => '删除所选';
|
||||
|
||||
@override
|
||||
String get actionUndo => '撤销';
|
||||
|
||||
|
||||
@@ -42,6 +42,14 @@
|
||||
"brushBallpoint": "圆珠笔",
|
||||
"brushPencil": "铅笔",
|
||||
"brushHighlighter": "荧光笔",
|
||||
"toolSelect": "选择",
|
||||
"toolShape": "形状",
|
||||
"shapePicker": "形状",
|
||||
"shapeLine": "直线",
|
||||
"shapeRectangle": "矩形",
|
||||
"shapeEllipse": "椭圆",
|
||||
"shapeArrow": "箭头",
|
||||
"actionDeleteSelection": "删除所选",
|
||||
"actionUndo": "撤销",
|
||||
"actionRedo": "重做",
|
||||
"fingerDrawingOn": "手指书写:开",
|
||||
|
||||
Reference in New Issue
Block a user