summaryrefslogtreecommitdiff
path: root/src/draw.c
diff options
context:
space:
mode:
authorLouie Shprung <lshprung@tutanota.com>2024-08-11 17:49:28 -0400
committerLouie Shprung <lshprung@tutanota.com>2024-08-11 17:49:28 -0400
commit4e68f637300c0e360d49f8f672d0675d42da0d1f (patch)
tree9603de49bbbc19623823479fce6bb95c40fda26a /src/draw.c
parent85596300cc45d73bd3335d8c802b7c590fb1e1d2 (diff)
(Currently broken) reimplementation of group and entry
Diffstat (limited to 'src/draw.c')
-rw-r--r--src/draw.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/draw.c b/src/draw.c
index 15a9289..1775329 100644
--- a/src/draw.c
+++ b/src/draw.c
@@ -42,7 +42,6 @@ int true_hover = 0; //0 = hovering on groups, 1 = hovering on entries
GROUP **g;
ENTRY **e;
int g_count;
-int e_count;
int g_offset = 0;
int *e_offset;
@@ -70,15 +69,18 @@ int main(int argc, char **argv){
//Fill Groups
//read the contents of the cfg file; print help message if invalid
- if(!cfg_interp(cfg_path)){
+ g = cfg_interp(cfg_path, &g_count);
+ if(g == NULL) {
print_help(argv[0]);
return 1;
}
+ /*
//Remove Empty Groups from the Array
clean_groups();
g = get_groups(); //retrieve results of cfg_interp
g_count = get_gcount(); //retrieve number of groups in g (only do this after removing empty groups)
+ */
//check that there are is at least one valid group
if(g_count == 0){
@@ -91,7 +93,7 @@ int main(int argc, char **argv){
e_offset = calloc(g_count, sizeof(int));
//load cached data
- load_cache(g_count, &g_hover, &e_hover, &e_offset, &true_hover, cfg_path);
+ //load_cache(g_count, &g_hover, &e_hover, &e_offset, &true_hover, cfg_path);
//reopen stdout for drawing menu
freopen("/dev/tty", "w", stdout);
@@ -125,6 +127,7 @@ int main(int argc, char **argv){
update_display(true);
//drawing is done, now run a while loop to receive input (ESC ends this loop)
+ input = 0;
while(input != 27){
input = getch();
@@ -151,12 +154,12 @@ int main(int argc, char **argv){
case KEY_NPAGE:
//case KEY_SDOWN:
- trav_col((true_hover ? e_count : g_count)-1);
+ trav_col((true_hover ? get_ecount(g[g_hover]) : g_count)-1);
break;
case KEY_F(3):
//jump to random group/entry
- trav_col(rand() % (true_hover ? e_count : g_count));
+ trav_col(rand() % (true_hover ? get_ecount(g[g_hover]) : g_count));
break;
case KEY_F(5):
@@ -333,13 +336,16 @@ void fill_col(int mode){
int i;
WINDOW *col = (mode ? entry_win : group_win);
- int count = (mode ? e_count : g_count);
+ int count = (mode ? get_ecount(g[g_hover]) : g_count);
int offset = (mode ? e_offset[g_hover] : g_offset);
int max_len = getmaxx(col)-2; //longest possible string length that can be displayed in the window
int ycoord = 1;
int max_y = HEIGHT-(6+GAP_SIZE);
char *name;
+ mvwprintw(col, 0, 0, "i: %d\n", offset);
+ if(offset < 0) offset = 0;
+
for(i = 0+offset; i < count; i++){
if(ycoord >= max_y) break; //reached the bottom of the terminal window, stop drawing
name = (mode ? get_ename(e[i]) : get_gname(g[i]));
@@ -421,8 +427,7 @@ void update_col(int mode, int y_hl, bool resize){
break;
case 1:
- e_count = get_ecount(g[g_hover]);
- e = get_entries(get_ghead(g[g_hover]), e_count);
+ e = get_gentries(g[g_hover]);
fill_col(1);
if(!resize) mvwchgat(entry_win, y_hl, 1, getmaxx(entry_win)-2, A_DIM, 1, NULL);
else mvwchgat(entry_win, 1+e_hover[g_hover]-e_offset[g_hover], 1, getmaxx(entry_win)-2, A_DIM, (true_hover ? 2 : 1), NULL);
@@ -464,7 +469,7 @@ void switch_col(){
void trav_col(int new_i){
int *focus = (true_hover ? &(e_hover[g_hover]) : &g_hover); //make it easy to know which column we are looking at
int *offset = (true_hover ? &(e_offset[g_hover]) : &g_offset);
- int count = (true_hover ? e_count : g_count);
+ int count = (true_hover ? get_ecount(g[g_hover]) : g_count);
int max_hl = HEIGHT-(3+GAP_SIZE); //for some reason, this works
int min_hl = 5;
int oob_flag = 0; //0 = none, 1 = bottom, 2 = top
@@ -520,7 +525,7 @@ int locateChar(char input){
if(fold_case && input >= 97 && input <= 122) input -= 32;
if(true_hover){ //hovering on entries
- for(i = location+1; i < e_count; i++){
+ for(i = location+1; i < get_ecount(g[g_hover]); i++){
first_char = get_ename(e[i])[0];
if(fold_case && first_char >= 97 && first_char <= 122) first_char -= 32;
if(input == first_char){
@@ -548,7 +553,7 @@ char *get_launch(){
char *program = get_gprog(g[g_hover]);
char *flags = get_gflags(g[g_hover]);
char *path = get_epath(e[e_hover[g_hover]]);
- bool quotes = get_gquotes(g[g_hover]);
+ bool quotes = false;
char *full_command = malloc(sizeof(char) * BUF_LEN);
full_command[0] = '\0';