status_bar() rewritten from scratch to handle multiple status pages
reset_status_page() and other_status_page() created
This commit is contained in:
parent
a4ec6c6b3b
commit
0140f2e4c6
221
src/utils.c
221
src/utils.c
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: utils.c,v 1.4 2006/08/31 18:50:17 culot Exp $ */
|
/* $calcurse: utils.c,v 1.5 2006/09/06 17:09:36 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -38,6 +38,7 @@
|
|||||||
#include "custom.h"
|
#include "custom.h"
|
||||||
#include "vars.h"
|
#include "vars.h"
|
||||||
|
|
||||||
|
static unsigned status_page;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print a message in the status bar.
|
* Print a message in the status bar.
|
||||||
@ -325,148 +326,70 @@ void scroller(WINDOW *win, char *mesg, int x, int y, int nb_row, int nb_col)
|
|||||||
wnoutrefresh(swin);
|
wnoutrefresh(swin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Draws the status bar */
|
/*
|
||||||
|
* Draws the status bar.
|
||||||
|
* To add a keybinding, insert it in the 'keys' and 'labels' tables,
|
||||||
|
* and update the NB_CAL_CMDS, NB_APP_CMDS or NB_TOD_CMDS defines
|
||||||
|
* in utils.h, depending on which panel the added keybind is assigned to.
|
||||||
|
*/
|
||||||
void status_bar(int which_pan, int colr, int nc_bar, int nl_bar)
|
void status_bar(int which_pan, int colr, int nc_bar, int nl_bar)
|
||||||
{
|
{
|
||||||
int nb_item_cal, nb_item_oth;
|
int cmd_length, space_between_cmds, start, end, i, j = 0;
|
||||||
int len_let, len_des, spc_lad;
|
const int pos[NB_PANELS + 1] =
|
||||||
int spc_bet_cal_itm, spc_bet_oth_itm;
|
{0, NB_CAL_CMDS, NB_CAL_CMDS + NB_APP_CMDS, TOTAL_CMDS};
|
||||||
int len_cal_itm, len_oth_itm;
|
|
||||||
|
|
||||||
nb_item_cal = 10; /* max item number to display in status bar */
|
binding_t help = { " ?", N_("Help") };
|
||||||
nb_item_cal = ceil(nb_item_cal / 2); /* two lines to display items */
|
binding_t quit = { " Q", N_("Quit") };
|
||||||
nb_item_oth = 12;
|
binding_t save = { " S", N_("Save") };
|
||||||
nb_item_oth = ceil(nb_item_oth / 2);
|
binding_t add = { " A", N_("Add Item") };
|
||||||
len_let = 3;
|
binding_t del = { " D", N_("Del Item") };
|
||||||
len_des = 8;
|
binding_t day = { "H/L", N_("-+1 Day") };
|
||||||
spc_lad = 1;
|
binding_t week = { "K/J", N_("-+1 Week") };
|
||||||
|
binding_t updn = { "K/J", N_("Up/Down") };
|
||||||
|
binding_t rept = { " R", N_("Repeat") };
|
||||||
|
binding_t prio = { "+/-", N_("Priority") };
|
||||||
|
binding_t tab = { "Tab", N_("Chg View") };
|
||||||
|
binding_t togo = { " G", N_("Go to") };
|
||||||
|
binding_t conf = { " C", N_("Config") };
|
||||||
|
binding_t view = { " V", N_("View") };
|
||||||
|
binding_t draw = { " ^R", N_("Redraw") };
|
||||||
|
binding_t appt = { " ^A", N_("Add Appt") };
|
||||||
|
binding_t todo = { " ^T", N_("Add Todo") };
|
||||||
|
binding_t eday = { "^HL", N_("-+1 Day") };
|
||||||
|
binding_t ewek = { "^KJ", N_("-+1 Week") };
|
||||||
|
binding_t othr = { " O", N_("OtherCmd") };
|
||||||
|
|
||||||
spc_bet_cal_itm =
|
binding_t *binding[TOTAL_CMDS] = {
|
||||||
floor((col -
|
/* calendar keys */
|
||||||
nb_item_cal * (len_let + len_des +
|
&help, &quit, &save, &togo, &day, &week, &tab, &conf, &draw,
|
||||||
spc_lad)) / nb_item_cal);
|
&appt, &todo, &othr, &eday, &ewek, &othr,
|
||||||
spc_bet_oth_itm =
|
/* appointment keys */
|
||||||
floor((col -
|
&help, &quit, &save, &togo, &add, &del, &view, &rept, &updn,
|
||||||
nb_item_oth * (len_let + len_des +
|
&tab, &conf, &othr, &draw, &appt, &todo, &eday, &ewek, &othr,
|
||||||
spc_lad)) / nb_item_oth);
|
/* todo keys */
|
||||||
len_cal_itm = len_let + spc_lad + len_des + spc_bet_cal_itm;
|
&help, &quit, &save, &togo, &add, &del, &view, &prio, &updn,
|
||||||
len_oth_itm = len_let + spc_lad + len_des + spc_bet_oth_itm;
|
&tab, &conf, &othr, &draw, &appt, &todo, &eday, &ewek, &othr };
|
||||||
|
|
||||||
|
/* Total length of a command. */
|
||||||
|
cmd_length = KEY_LENGTH + LABEL_LENGTH;
|
||||||
|
space_between_cmds = floor(col / CMDS_PER_LINE - cmd_length);
|
||||||
|
cmd_length += space_between_cmds;
|
||||||
|
|
||||||
|
/* Drawing the keybinding with attribute and label without. */
|
||||||
erase_window_part(swin, 0, 0, nc_bar, nl_bar);
|
erase_window_part(swin, 0, 0, nc_bar, nl_bar);
|
||||||
switch (which_pan) {
|
start = pos[which_pan] + 2*CMDS_PER_LINE*(status_page - 1);
|
||||||
|
end = MIN(start + 2*CMDS_PER_LINE, pos[which_pan + 1]);
|
||||||
case 0: /* CALENDAR */
|
for (i = start; i < end; i += 2) {
|
||||||
custom_apply_attr(swin, ATTR_HIGHEST);
|
custom_apply_attr(swin, ATTR_HIGHEST);
|
||||||
mvwprintw(swin, 0, 0, " ?");
|
mvwprintw(swin, 0, j*cmd_length, binding[i]->key);
|
||||||
mvwprintw(swin, 1, 0, " Q");
|
if (i + 1 != end)
|
||||||
mvwprintw(swin, 0, len_cal_itm, " ^L");
|
mvwprintw(swin, 1, j*cmd_length, binding[i+1]->key);
|
||||||
mvwprintw(swin, 1, len_cal_itm, " S");
|
|
||||||
mvwprintw(swin, 0, 2 * len_cal_itm, "H/L");
|
|
||||||
mvwprintw(swin, 1, 2 * len_cal_itm, "J/K");
|
|
||||||
mvwprintw(swin, 0, 3 * len_cal_itm, " G");
|
|
||||||
mvwprintw(swin, 1, 3 * len_cal_itm, "Tab");
|
|
||||||
mvwprintw(swin, 0, 4 * len_cal_itm, " C");
|
|
||||||
custom_remove_attr(swin, ATTR_HIGHEST);
|
custom_remove_attr(swin, ATTR_HIGHEST);
|
||||||
wnoutrefresh(swin);
|
mvwprintw(swin,0,j*cmd_length+KEY_LENGTH,binding[i]->label);
|
||||||
|
if (i + 1 != end)
|
||||||
mvwprintw(swin, 0, len_let + spc_lad, _("Help"));
|
mvwprintw(swin,1,j*cmd_length+KEY_LENGTH,binding[i+1]->label);
|
||||||
mvwprintw(swin, 1, len_let + spc_lad, _("Quit"));
|
j++;
|
||||||
mvwprintw(swin, 0, len_cal_itm + len_let + spc_lad,
|
|
||||||
_("Redraw"));
|
|
||||||
mvwprintw(swin, 1, len_cal_itm + len_let + spc_lad, _("Save"));
|
|
||||||
mvwprintw(swin, 0, 2 * len_cal_itm + len_let + spc_lad,
|
|
||||||
_("-/+1 Day"));
|
|
||||||
mvwprintw(swin, 1, 2 * len_cal_itm + len_let + spc_lad,
|
|
||||||
_("-/+1 Week"));
|
|
||||||
mvwprintw(swin, 0, 3 * len_cal_itm + len_let + spc_lad,
|
|
||||||
_("GoTo"));
|
|
||||||
mvwprintw(swin, 1, 3 * len_cal_itm + len_let + spc_lad,
|
|
||||||
_("Chg View"));
|
|
||||||
mvwprintw(swin, 0, 4 * len_cal_itm + len_let + spc_lad,
|
|
||||||
_("Config"));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: /* APPOINTMENT */
|
|
||||||
custom_apply_attr(swin, ATTR_HIGHEST);
|
|
||||||
mvwprintw(swin, 0, 0, " ?");
|
|
||||||
mvwprintw(swin, 1, 0, " Q");
|
|
||||||
mvwprintw(swin, 0, len_oth_itm, " ^L");
|
|
||||||
mvwprintw(swin, 1, len_oth_itm, " S");
|
|
||||||
mvwprintw(swin, 0, 2 * len_oth_itm, "J/K");
|
|
||||||
mvwprintw(swin, 1, 2 * len_oth_itm, "Tab");
|
|
||||||
mvwprintw(swin, 0, 3 * len_oth_itm, " A");
|
|
||||||
mvwprintw(swin, 1, 3 * len_oth_itm, " D");
|
|
||||||
mvwprintw(swin, 0, 4 * len_oth_itm, " R");
|
|
||||||
mvwprintw(swin, 1, 4 * len_oth_itm, " G");
|
|
||||||
mvwprintw(swin, 0, 5 * len_oth_itm, " V");
|
|
||||||
mvwprintw(swin, 1, 5 * len_oth_itm, " C");
|
|
||||||
custom_remove_attr(swin, ATTR_HIGHEST);
|
|
||||||
wnoutrefresh(swin);
|
|
||||||
|
|
||||||
mvwprintw(swin, 0, len_let + spc_lad, _("Help"));
|
|
||||||
mvwprintw(swin, 1, len_let + spc_lad, _("Quit"));
|
|
||||||
mvwprintw(swin, 0, len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Redraw"));
|
|
||||||
mvwprintw(swin, 1, len_oth_itm + len_let + spc_lad, _("Save"));
|
|
||||||
mvwprintw(swin, 0, 2 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Up/Down"));
|
|
||||||
mvwprintw(swin, 1, 2 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Chg View"));
|
|
||||||
mvwprintw(swin, 0, 3 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Add Item"));
|
|
||||||
mvwprintw(swin, 1, 3 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Del Item"));
|
|
||||||
mvwprintw(swin, 0, 4 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Repeat"));
|
|
||||||
mvwprintw(swin, 1, 4 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_( "GoTo"));
|
|
||||||
mvwprintw(swin, 0, 5 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("View"));
|
|
||||||
mvwprintw(swin, 1, 5 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Config"));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: /* TODO */
|
|
||||||
custom_apply_attr(swin, ATTR_HIGHEST);
|
|
||||||
mvwprintw(swin, 0, 0, " ?");
|
|
||||||
mvwprintw(swin, 1, 0, " Q");
|
|
||||||
mvwprintw(swin, 0, len_oth_itm, " ^L");
|
|
||||||
mvwprintw(swin, 1, len_oth_itm, " S");
|
|
||||||
mvwprintw(swin, 0, 2 * len_oth_itm, "J/K");
|
|
||||||
mvwprintw(swin, 1, 2 * len_oth_itm, "Tab");
|
|
||||||
mvwprintw(swin, 0, 3 * len_oth_itm, " A");
|
|
||||||
mvwprintw(swin, 1, 3 * len_oth_itm, " D");
|
|
||||||
mvwprintw(swin, 0, 4 * len_oth_itm, "+/-");
|
|
||||||
mvwprintw(swin, 1, 4 * len_oth_itm, " V");
|
|
||||||
mvwprintw(swin, 0, 5 * len_oth_itm, " G");
|
|
||||||
mvwprintw(swin, 1, 5 * len_oth_itm, " C");
|
|
||||||
custom_remove_attr(swin, ATTR_HIGHEST);
|
|
||||||
wnoutrefresh(swin);
|
|
||||||
|
|
||||||
mvwprintw(swin, 0, len_let + spc_lad, _("Help"));
|
|
||||||
mvwprintw(swin, 1, len_let + spc_lad, _("Quit"));
|
|
||||||
mvwprintw(swin, 0, len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Redraw"));
|
|
||||||
mvwprintw(swin, 1, len_oth_itm + len_let + spc_lad, _("Save"));
|
|
||||||
mvwprintw(swin, 0, 2 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Up/Down"));
|
|
||||||
mvwprintw(swin, 1, 2 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Chg View"));
|
|
||||||
mvwprintw(swin, 0, 3 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Add Item"));
|
|
||||||
mvwprintw(swin, 1, 3 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Del Item"));
|
|
||||||
mvwprintw(swin, 0, 4 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Priority"));
|
|
||||||
mvwprintw(swin, 1, 4 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_( "View"));
|
|
||||||
mvwprintw(swin, 0, 5 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("GoTo"));
|
|
||||||
mvwprintw(swin, 1, 5 * len_oth_itm + len_let + spc_lad,
|
|
||||||
_("Config"));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wnoutrefresh(swin);
|
wnoutrefresh(swin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -661,3 +584,33 @@ void display_item(WINDOW *win, int incolor, char *msg, int len,
|
|||||||
if (incolor == 0)
|
if (incolor == 0)
|
||||||
custom_remove_attr(win, ATTR_HIGHEST);
|
custom_remove_attr(win, ATTR_HIGHEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reset the status bar page. */
|
||||||
|
void reset_status_page(void)
|
||||||
|
{
|
||||||
|
status_page = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update the status bar page number to display other commands. */
|
||||||
|
void other_status_page(int panel)
|
||||||
|
{
|
||||||
|
int nb_item, max_page;
|
||||||
|
|
||||||
|
switch (panel) {
|
||||||
|
case 0:
|
||||||
|
nb_item = NB_CAL_CMDS;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
nb_item = NB_APP_CMDS;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
nb_item = NB_TOD_CMDS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
max_page = ceil( nb_item / (2*CMDS_PER_LINE) ) + 1;
|
||||||
|
if (status_page < max_page) {
|
||||||
|
status_page++;
|
||||||
|
} else {
|
||||||
|
status_page = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user