feat: redesign View tab and fix Annotate/tab order

- Redesign View ribbon tab with 8 groups matching AutoCAD layout:
  Viewport Tools (UCS Icon, ViewCube, Navigation Bar),
  Navigate, Model Viewports (Viewport Configuration, Named, Join, Restore),
  Visual Style (dropdown), Projection, Preset,
  Palettes (Tool Palettes, Properties, Sheet Set Manager),
  Interface (File Tabs, Layout Tabs, Tile Horiz/Vert, Cascade)
- Add Extract Data and Link Data tools to Annotate → Tables group
- Fix tab order to Home → Insert → Annotate → View → Manage via build.rs PRIORITY list
- Add 17 new SVG icons for all new commands

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-04-09 12:25:15 +03:00
commit e3bce16545
38 changed files with 354 additions and 19 deletions

6
assets/icons/cascade.svg Normal file
View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Three cascaded windows -->
<rect x="8" y="10" width="13" height="11" rx="1"/>
<rect x="5" y="7" width="13" height="11" rx="1"/>
<rect x="2" y="4" width="13" height="11" rx="1"/>
</svg>

After

Width:  |  Height:  |  Size: 359 B

View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Table grid -->
<rect x="2" y="4" width="14" height="12" rx="1"/>
<line x1="2" y1="8" x2="16" y2="8"/>
<line x1="2" y1="12" x2="16" y2="12"/>
<line x1="7" y1="4" x2="7" y2="16"/>
<!-- Arrow pointing right/out -->
<line x1="18" y1="10" x2="23" y2="10"/>
<polyline points="20,7 23,10 20,13"/>
</svg>

After

Width:  |  Height:  |  Size: 479 B

View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Table grid -->
<rect x="2" y="4" width="12" height="12" rx="1"/>
<line x1="2" y1="8" x2="14" y2="8"/>
<line x1="2" y1="12" x2="14" y2="12"/>
<line x1="6" y1="4" x2="6" y2="16"/>
<!-- Link chain -->
<path d="M17 10 h2 a3 3 0 0 1 0 6 h-2"/>
<path d="M19 13 h-4"/>
<path d="M17 13 h-2 a3 3 0 0 1 0-6 h2"/>
</svg>

After

Width:  |  Height:  |  Size: 494 B

View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Tab bar at top -->
<rect x="2" y="5" width="6" height="4" rx="1"/>
<rect x="9" y="5" width="6" height="4" rx="1"/>
<rect x="16" y="5" width="6" height="4" rx="1"/>
<!-- Document area below -->
<rect x="2" y="9" width="20" height="12" rx="0 0 1 1"/>
<!-- File icon inside -->
<polyline points="7,12 7,18 17,18 17,12"/>
<polyline points="7,12 11,12 12,11 17,12" stroke-width="1"/>
</svg>

After

Width:  |  Height:  |  Size: 570 B

View file

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Document area -->
<rect x="2" y="3" width="20" height="15" rx="1"/>
<!-- Layout tabs at bottom -->
<rect x="2" y="18" width="6" height="3" rx="1 1 0 0"/>
<rect x="9" y="18" width="6" height="3" rx="1 1 0 0"/>
<!-- Page border inside -->
<rect x="5" y="6" width="14" height="9" rx="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 475 B

10
assets/icons/navbar.svg Normal file
View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Compass rose -->
<circle cx="12" cy="12" r="9"/>
<line x1="12" y1="3" x2="12" y2="8"/>
<line x1="12" y1="16" x2="12" y2="21"/>
<line x1="3" y1="12" x2="8" y2="12"/>
<line x1="16" y1="12" x2="21" y2="12"/>
<!-- N marker -->
<text x="9.5" y="7" font-size="4.5" fill="currentColor" stroke="none">N</text>
</svg>

After

Width:  |  Height:  |  Size: 491 B

View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Properties panel -->
<rect x="4" y="2" width="16" height="20" rx="1"/>
<!-- Header -->
<line x1="4" y1="6" x2="20" y2="6"/>
<!-- Property rows: label + value -->
<line x1="6" y1="10" x2="11" y2="10"/>
<line x1="13" y1="10" x2="18" y2="10"/>
<line x1="6" y1="14" x2="11" y2="14"/>
<line x1="13" y1="14" x2="18" y2="14"/>
<line x1="6" y1="18" x2="11" y2="18"/>
<line x1="13" y1="18" x2="18" y2="18"/>
<!-- Divider between label and value -->
<line x1="12" y1="7" x2="12" y2="20" stroke-dasharray="2 2"/>
</svg>

After

Width:  |  Height:  |  Size: 701 B

View file

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Stack of sheets -->
<rect x="5" y="6" width="14" height="16" rx="1"/>
<rect x="3" y="4" width="14" height="16" rx="1"/>
<!-- Lines on top sheet -->
<line x1="5" y1="8" x2="15" y2="8"/>
<line x1="5" y1="11" x2="15" y2="11"/>
<line x1="5" y1="14" x2="11" y2="14"/>
</svg>

After

Width:  |  Height:  |  Size: 450 B

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Two windows stacked horizontally -->
<rect x="2" y="3" width="20" height="8" rx="1"/>
<rect x="2" y="13" width="20" height="8" rx="1"/>
</svg>

After

Width:  |  Height:  |  Size: 315 B

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Two windows side by side vertically -->
<rect x="2" y="3" width="9" height="18" rx="1"/>
<rect x="13" y="3" width="9" height="18" rx="1"/>
</svg>

After

Width:  |  Height:  |  Size: 318 B

View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Palette panel (vertical strip) -->
<rect x="3" y="2" width="7" height="20" rx="1"/>
<!-- Tab on top -->
<rect x="3" y="2" width="7" height="4" rx="1"/>
<!-- Stacked items inside -->
<line x1="5" y1="9" x2="8" y2="9"/>
<rect x="4" y="7" width="2" height="2"/>
<line x1="5" y1="14" x2="8" y2="14"/>
<rect x="4" y="12" width="2" height="2"/>
<line x1="5" y1="19" x2="8" y2="19"/>
<rect x="4" y="17" width="2" height="2"/>
<!-- Shadow panel behind -->
<rect x="11" y="4" width="7" height="16" rx="1" stroke-dasharray="3 2"/>
</svg>

After

Width:  |  Height:  |  Size: 720 B

10
assets/icons/ucs_icon.svg Normal file
View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- X axis (red-ish) -->
<line x1="4" y1="18" x2="14" y2="18"/>
<polyline points="11,15 14,18 11,21"/>
<text x="15" y="21" font-size="5" fill="currentColor" stroke="none">X</text>
<!-- Y axis -->
<line x1="4" y1="18" x2="4" y2="6"/>
<polyline points="1,9 4,6 7,9"/>
<text x="1" y="5" font-size="5" fill="currentColor" stroke="none">Y</text>
</svg>

After

Width:  |  Height:  |  Size: 526 B

View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Front face -->
<rect x="6" y="10" width="10" height="10" rx="1"/>
<!-- Top face -->
<polygon points="6,10 10,6 20,6 16,10"/>
<!-- Right face -->
<polygon points="16,10 20,6 20,16 16,20"/>
</svg>

After

Width:  |  Height:  |  Size: 373 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- 4 viewport grid -->
<rect x="2" y="2" width="9" height="9" rx="1"/>
<rect x="13" y="2" width="9" height="9" rx="1"/>
<rect x="2" y="13" width="9" height="9" rx="1"/>
<rect x="13" y="13" width="9" height="9" rx="1"/>
</svg>

After

Width:  |  Height:  |  Size: 399 B

View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Two small viewports -->
<rect x="2" y="4" width="9" height="7" rx="1"/>
<rect x="2" y="13" width="9" height="7" rx="1"/>
<!-- Arrow merging into one -->
<line x1="13" y1="12" x2="18" y2="12"/>
<polyline points="16,9 18,12 16,15"/>
<!-- Result: one big viewport -->
<rect x="19" y="4" width="3" height="16" rx="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 506 B

View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Two viewports side by side -->
<rect x="2" y="4" width="9" height="16" rx="1"/>
<rect x="13" y="4" width="9" height="16" rx="1"/>
<!-- Label line on each -->
<line x1="4" y1="7" x2="9" y2="7"/>
<line x1="15" y1="7" x2="20" y2="7"/>
</svg>

After

Width:  |  Height:  |  Size: 417 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<!-- Single viewport with restore arrow -->
<rect x="3" y="4" width="18" height="16" rx="1"/>
<!-- Restore/refresh arrow inside -->
<path d="M9 14 A4 4 0 1 1 15 14"/>
<polyline points="15,11 15,14 18,14"/>
</svg>

After

Width:  |  Height:  |  Size: 384 B