Skip to content

Commit 9228cd8

Browse files
Merge pull request #132 from wcampbell0x2a/use-real-tabs
Use vhs for all examples/readme / Use real Tabs
2 parents 911c9bd + 9a9facc commit 9228cd8

11 files changed

+102
-52
lines changed

RELEASE.md

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
# Update screenshot
1+
# Update screenshot and vhs examples
22
```sh
3-
$ cargo r --profile=dist -- --cmds test-sources/test.source
4-
$ wmctrl -lx
5-
$ import -window {id} images/screenshot.png
6-
```
7-
8-
# Update vhs
9-
```sh
10-
$ vhs docs/vhs/main.tape
11-
$ vhs docs/vhs/hexdump.tape
3+
$ just update-screenshots
124
```

docs/hexdump_section.gif

-1.16 KB
Loading

docs/main_section.gif

420 KB
Loading

docs/vhs/main.tape

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Enter
1111
Sleep 5s
1212

1313
Show
14-
Type "i"
14+
Type "si"
1515
Type "si"
1616
Enter
1717
Sleep 2s

docs/vhs/readme.tape

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Set Theme ayu
2+
Set Padding 2
3+
Set FontSize 12
4+
Set Width 1000
5+
Set Height 1000
6+
7+
Hide
8+
Type "cargo r --release -- --cmds test-sources/test.source"
9+
Enter
10+
Sleep 2s
11+
Show
12+
Type "si"
13+
Enter
14+
Type "si"
15+
Enter
16+
Sleep 2s
17+
Screenshot images/screenshot.png
18+
Sleep 2s
19+

images/screenshot.png

325 KB
Loading

justfile

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
update-screenshots:
2+
vhs docs/vhs/main.tape
3+
vhs docs/vhs/hexdump.tape
4+
vhs docs/vhs/readme.tape
5+

src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ struct Args {
108108
log_path: Option<String>,
109109
}
110110

111+
#[derive(Copy, Clone)]
111112
enum Mode {
112113
All,
113114
OnlyRegister,

src/snapshots/heretek__tests__render_app.snap

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ source: src/main.rs
33
expression: output
44
snapshot_kind: text
55
---
6-
"────────────────────────────────────────────────────────────────────────|heretek-v0.4.0|────────────────────────────────────────────────────────────────────────"
7-
" F1 main | F2 registers | F3 stack | F4 instructions | F5 output | F6 mapping | F7 hexdump | Heap | Stack | Code "
6+
"────────────────────────────────────────────────────────────────────────|heretek-v0.4.0|──────────────────────────────── | Heap | Stack | Code | String | Asm | "
7+
" F1 Main | F2 Registers | F3 Stack | F4 Instructions | F5 Output | F6 Mapping | F7 Hexdump "
88
"Registers───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────"
99
" rax → 0x401825 → main+0 (push %rbp) "
1010
" rbx → 0x1 "

src/ui/mod.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ const GRAY_FG: Color = Color::Rgb(100, 100, 100);
3232
const HEAP_COLOR: Color = GREEN;
3333
const STACK_COLOR: Color = PURPLE;
3434
const TEXT_COLOR: Color = RED;
35+
const STRING_COLOR: Color = YELLOW;
36+
const ASM_COLOR: Color = ORANGE;
3537

3638
const SAVED_OUTPUT: usize = 10;
3739

@@ -171,7 +173,8 @@ pub fn add_deref_to_span(
171173
full_s.push_str(s);
172174
}
173175
}
174-
let cell = Span::from(format!("→ \"{}\"", full_s)).style(Style::new().fg(YELLOW));
176+
let cell =
177+
Span::from(format!("→ \"{}\"", full_s)).style(Style::new().fg(STRING_COLOR));
175178
spans.push(cell);
176179
return;
177180
}
@@ -193,7 +196,7 @@ pub fn add_deref_to_span(
193196
if !deref.final_assembly.is_empty() {
194197
spans.push(
195198
Span::from(format!("→ {:width$}", deref.final_assembly, width = width))
196-
.style(Style::new().fg(ORANGE)),
199+
.style(Style::new().fg(ASM_COLOR)),
197200
);
198201
}
199202
if spans.len() > *longest_cells {

src/ui/title.rs

+67-37
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
use ratatui::layout::Constraint::Length;
22
use ratatui::layout::{Alignment, Layout};
33
use ratatui::prelude::Stylize;
4-
use ratatui::style::{Color, Modifier};
5-
use ratatui::text::{Line, Span, Text};
6-
use ratatui::widgets::{Block, Borders, Paragraph};
4+
use ratatui::style::Modifier;
5+
use ratatui::text::Span;
6+
use ratatui::widgets::block::Title;
7+
use ratatui::widgets::{Block, Borders, Tabs};
78
use ratatui::{layout::Rect, style::Style, Frame};
89

9-
use super::{GRAY_FG, HEAP_COLOR, STACK_COLOR, TEXT_COLOR};
10+
use super::{
11+
ASM_COLOR, DARK_GRAY, GRAY, GRAY_FG, GREEN, HEAP_COLOR, RED, STACK_COLOR, STRING_COLOR,
12+
TEXT_COLOR,
13+
};
1014

1115
use crate::{App, InputMode};
1216

@@ -16,15 +20,48 @@ pub fn draw_title_area(app: &App, f: &mut Frame, title_area: Rect) {
1620
f.render_widget(
1721
Block::new()
1822
.borders(Borders::TOP)
19-
.title(vec![
20-
"|".fg(GRAY_FG),
21-
env!("CARGO_PKG_NAME").bold(),
22-
"-".fg(GRAY_FG),
23-
"v".into(),
24-
env!("CARGO_PKG_VERSION").into(),
25-
"|".fg(GRAY_FG),
26-
])
27-
.title_alignment(Alignment::Center),
23+
.title(
24+
Title::from(vec![
25+
"|".fg(GRAY_FG),
26+
env!("CARGO_PKG_NAME").bold(),
27+
"-".fg(GRAY_FG),
28+
"v".into(),
29+
env!("CARGO_PKG_VERSION").into(),
30+
"|".fg(GRAY_FG),
31+
])
32+
.alignment(Alignment::Center),
33+
)
34+
.title(
35+
Title::from(vec![
36+
Span::raw(" | "),
37+
Span::styled(
38+
"Heap",
39+
Style::default().fg(HEAP_COLOR).add_modifier(Modifier::BOLD),
40+
),
41+
Span::raw(" | "),
42+
Span::styled(
43+
"Stack",
44+
Style::default().fg(STACK_COLOR).add_modifier(Modifier::BOLD),
45+
),
46+
Span::raw(" | "),
47+
Span::styled(
48+
"Code",
49+
Style::default().fg(TEXT_COLOR).add_modifier(Modifier::BOLD),
50+
),
51+
Span::raw(" | "),
52+
Span::styled(
53+
"String",
54+
Style::default().fg(STRING_COLOR).add_modifier(Modifier::BOLD),
55+
),
56+
Span::raw(" | "),
57+
Span::styled(
58+
"Asm",
59+
Style::default().fg(ASM_COLOR).add_modifier(Modifier::BOLD),
60+
),
61+
Span::raw(" | "),
62+
])
63+
.alignment(Alignment::Right),
64+
),
2865
first,
2966
);
3067
// Title Area
@@ -39,28 +76,21 @@ pub fn draw_title_area(app: &App, f: &mut Frame, title_area: Rect) {
3976
}
4077
};
4178

42-
let msg = vec![
43-
Span::styled("F1", Style::default().add_modifier(Modifier::BOLD)),
44-
Span::raw(" main | "),
45-
Span::styled("F2", Style::default().add_modifier(Modifier::BOLD)),
46-
Span::raw(" registers | "),
47-
Span::styled("F3", Style::default().add_modifier(Modifier::BOLD)),
48-
Span::raw(" stack | "),
49-
Span::styled("F4", Style::default().add_modifier(Modifier::BOLD)),
50-
Span::raw(" instructions | "),
51-
Span::styled("F5", Style::default().add_modifier(Modifier::BOLD)),
52-
Span::raw(" output | "),
53-
Span::styled("F6", Style::default().add_modifier(Modifier::BOLD)),
54-
Span::raw(" mapping | "),
55-
Span::styled("F7", Style::default().add_modifier(Modifier::BOLD)),
56-
Span::raw(" hexdump | "),
57-
Span::styled("Heap", Style::default().fg(HEAP_COLOR).add_modifier(Modifier::BOLD)),
58-
Span::raw(" | "),
59-
Span::styled("Stack", Style::default().fg(STACK_COLOR).add_modifier(Modifier::BOLD)),
60-
Span::raw(" | "),
61-
Span::styled("Code", Style::default().fg(TEXT_COLOR).add_modifier(Modifier::BOLD)),
62-
];
63-
let text = Text::from(Line::from(msg));
64-
let help_message = Paragraph::new(text).alignment(Alignment::Center);
65-
f.render_widget(help_message, second);
79+
let mode = &app.mode;
80+
let tab = Tabs::new(vec![
81+
"F1 Main",
82+
"F2 Registers",
83+
"F3 Stack",
84+
"F4 Instructions",
85+
"F5 Output",
86+
"F6 Mapping",
87+
"F7 Hexdump",
88+
])
89+
.block(Block::new().title_alignment(Alignment::Center))
90+
.style(Style::default())
91+
.highlight_style(Style::default().fg(GREEN).add_modifier(Modifier::BOLD))
92+
.select(*mode as usize)
93+
.divider("|");
94+
95+
f.render_widget(tab, second);
6696
}

0 commit comments

Comments
 (0)