Skip to content

Commit 9627bf1

Browse files
committed
Blank slate message
1 parent 1af196f commit 9627bf1

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Next version
44

55
- Detect "no crontab for X"
6+
- Display a message when the file is empty
67

78
## v0.1.0
89

lib/render.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,16 @@ std::string render_logo() {
4242
return BOLD + "cronedit" + RESET;
4343
}
4444

45+
std::string render_item_begin(std::string line_number, int width) {
46+
return DIM + pad_left(line_number, width) + " | " + RESET;
47+
}
48+
4549
std::string render_item_begin(int line_number, int width) {
46-
return DIM + pad_left(std::to_string(line_number), width) + " | " + RESET;
50+
return render_item_begin(std::to_string(line_number), width);
51+
}
52+
53+
std::string render_blank_slate() {
54+
return DIM + "Empty crontab. Press <n> to add a job." + RESET;
4755
}
4856

4957
std::string render_quitting(std::string saved_file, std::string backup_file) {
@@ -262,7 +270,11 @@ std::string render_state(State& state, int terminal_width, int terminal_height)
262270

263271
int space_for = terminal_height - 5;
264272
VisibleItemIndexes item_indexes = calculate_visible_item_indexes(space_for, active_item, (int)items.size());
265-
if (item_indexes.begin_at >= 0) {
273+
if (item_indexes.begin_at == -1) {
274+
output << render_item_begin(" ", 1);
275+
output << render_blank_slate();
276+
output << std::endl;
277+
} else {
266278
int longest_line_number = std::to_string(item_indexes.end_at).length();
267279
int space_on_line = terminal_width - longest_line_number - 3;
268280
for (int index = item_indexes.begin_at; index < item_indexes.end_at; ++index) {

lib/render.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ std::string render_logo();
77

88
std::string render_item_begin(int line_number, int width);
99

10+
std::string render_item_begin(std::string, int width);
11+
12+
std::string render_blank_slate();
13+
1014
std::string render_quitting(std::string saved_file, std::string backup_file);
1115

1216
struct VisibleItemIndexes {

lib/render_test.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,17 @@ void test_very_simple_ones() {
3030
assert(rendered ==
3131
"{DIM} 1 | {RESET}"
3232
);
33+
rendered = replace_ansi(render_item_begin(" ", 1), true);
34+
debug_print_ui(rendered);
35+
assert(rendered ==
36+
"{DIM} | {RESET}"
37+
);
38+
39+
rendered = replace_ansi(render_blank_slate(), true);
40+
debug_print_ui(rendered);
41+
assert(rendered ==
42+
"{DIM}Empty crontab. Press <n> to add a job.{RESET}"
43+
);
3344

3445
rendered = replace_ansi(render_error_message("foobar"), true);
3546
debug_print_ui(rendered);
@@ -383,6 +394,7 @@ void test_render_state() {
383394
debug_print_ui(rendered);
384395
assert(
385396
rendered == "\
397+
| Empty crontab. Press <n> to add a job.\n\
386398
cronedit <arrow keys> move <s> save and quit <q> quit\n\
387399
<n> new\n\n\
388400
");

0 commit comments

Comments
 (0)