Building configuration menu to assign keybindings
This commit is contained in:
parent
9d4899110a
commit
eb88eaecb3
34
ChangeLog
34
ChangeLog
@ -1,5 +1,39 @@
|
||||
2008-11-23 Frederic Culot <frederic@culot.org>
|
||||
|
||||
* src/keys.c (keys_popup_info, keys_action_count_keys): new
|
||||
function
|
||||
|
||||
* src/utils.c (popup): updated to take a message to be displayed
|
||||
as extra argument
|
||||
|
||||
2008-11-22 Frederic Culot <frederic@culot.org>
|
||||
|
||||
* src/custom.c (custom_keys_config_bar): new function
|
||||
|
||||
* src/keys.c (keys_display_bindings_bar)
|
||||
(keys_action_nkey): new functions
|
||||
|
||||
* src/utils.c (format_key): moved to keys_format_label
|
||||
|
||||
2008-11-16 Frederic Culot <frederic@culot.org>
|
||||
|
||||
* src/custom.c (config_bar): renamed into custom_config_bar and
|
||||
updated to display key configuration menu
|
||||
|
||||
* src/custom.c (general_conf_set_scrsize): renamed into
|
||||
conf_set_scrsize
|
||||
|
||||
* src/custom.c (custom_keys_config, print_keys_bindings)
|
||||
(print_key_incolor, print_key_reverse): new functions
|
||||
|
||||
* src/utils.c (print_option_incolor): renamed into
|
||||
print_bool_option_incolor
|
||||
|
||||
* src/wins.c (wins_scrollwin_up, wins_scrollwin_down): amount of
|
||||
lines to be scrolled can now be specified
|
||||
|
||||
2008-11-15 Frederic Culot <frederic@culot.org>
|
||||
|
||||
* src/keys.c (keys_dump_defaults, dump_intro, keys_str2int)
|
||||
(keys_int2str, keys_init, add_key_str, del_key_str): new functions
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: calcurse.c,v 1.70 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: calcurse.c,v 1.71 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -243,7 +243,7 @@ main (int argc, char **argv)
|
||||
|
||||
case KEY_GENERIC_CONFIG_MENU:
|
||||
erase_status_bar ();
|
||||
config_bar ();
|
||||
custom_config_bar ();
|
||||
while ((key = wgetch (win[STA].p)) != 'q')
|
||||
{
|
||||
switch (key)
|
||||
@ -272,12 +272,16 @@ main (int argc, char **argv)
|
||||
case 'n':
|
||||
notify_config_bar ();
|
||||
break;
|
||||
case 'K':
|
||||
case 'k':
|
||||
custom_keys_config ();
|
||||
break;
|
||||
}
|
||||
wins_reset ();
|
||||
wins_update ();
|
||||
do_storage = true;
|
||||
erase_status_bar ();
|
||||
config_bar ();
|
||||
custom_config_bar ();
|
||||
}
|
||||
wins_update ();
|
||||
break;
|
||||
|
249
src/custom.c
249
src/custom.c
@ -1,4 +1,4 @@
|
||||
/* $calcurse: custom.c,v 1.25 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: custom.c,v 1.26 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -26,6 +26,7 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "custom.h"
|
||||
#include "i18n.h"
|
||||
@ -352,7 +353,7 @@ custom_load_conf (conf_t *conf, int background)
|
||||
|
||||
/* Draws the configuration bar */
|
||||
void
|
||||
config_bar (void)
|
||||
custom_config_bar (void)
|
||||
{
|
||||
int smlspc, spc;
|
||||
|
||||
@ -365,6 +366,7 @@ config_bar (void)
|
||||
mvwprintw (win[STA].p, 0, 2 + spc, "L");
|
||||
mvwprintw (win[STA].p, 1, 2 + spc, "C");
|
||||
mvwprintw (win[STA].p, 0, 2 + 2 * spc, "N");
|
||||
mvwprintw (win[STA].p, 1, 2 + 2 * spc, "K");
|
||||
custom_remove_attr (win[STA].p, ATTR_HIGHEST);
|
||||
|
||||
mvwprintw (win[STA].p, 0, 2 + smlspc, _("Exit"));
|
||||
@ -372,7 +374,8 @@ config_bar (void)
|
||||
mvwprintw (win[STA].p, 0, 2 + spc + smlspc, _("Layout"));
|
||||
mvwprintw (win[STA].p, 1, 2 + spc + smlspc, _("Color"));
|
||||
mvwprintw (win[STA].p, 0, 2 + 2 * spc + smlspc, _("Notify"));
|
||||
|
||||
mvwprintw (win[STA].p, 1, 2 + 2 * spc + smlspc, _("Keys"));
|
||||
|
||||
wnoutrefresh (win[STA].p);
|
||||
wmove (win[STA].p, 0, 0);
|
||||
doupdate ();
|
||||
@ -720,38 +723,41 @@ print_general_options (WINDOW *win, conf_t *conf)
|
||||
|
||||
y = 0;
|
||||
mvwprintw (win, y, XPOS, "[1] %s ", opt1);
|
||||
print_option_incolor (win, conf->auto_save, y, XPOS + 4 + strlen (opt1));
|
||||
print_bool_option_incolor (win, conf->auto_save, y,
|
||||
XPOS + 4 + strlen (opt1));
|
||||
mvwprintw (win, y + 1, XPOS,
|
||||
_("(if set to YES, automatic save is done when quitting)"));
|
||||
y += YOFF;
|
||||
mvwprintw (win, y, XPOS, "[2] %s ", opt2);
|
||||
print_option_incolor (win, conf->confirm_quit, y, XPOS + 4 + strlen (opt2));
|
||||
print_bool_option_incolor (win, conf->confirm_quit, y,
|
||||
XPOS + 4 + strlen (opt2));
|
||||
mvwprintw (win, y + 1, XPOS,
|
||||
_("(if set to YES, confirmation is required before quitting)"));
|
||||
y += YOFF;
|
||||
mvwprintw (win, y, XPOS, "[3] %s ", opt3);
|
||||
print_option_incolor (win, conf->confirm_delete, y, XPOS + 4 + strlen (opt3));
|
||||
print_bool_option_incolor (win, conf->confirm_delete, y,
|
||||
XPOS + 4 + strlen (opt3));
|
||||
mvwprintw (win, y + 1, XPOS,
|
||||
_("(if set to YES, confirmation is required "
|
||||
"before deleting an event)"));
|
||||
y += YOFF;
|
||||
mvwprintw (win, y, XPOS, "[4] %s ", opt4);
|
||||
print_option_incolor (win, conf->skip_system_dialogs, y,
|
||||
XPOS + 4 + strlen (opt4));
|
||||
print_bool_option_incolor (win, conf->skip_system_dialogs, y,
|
||||
XPOS + 4 + strlen (opt4));
|
||||
mvwprintw (win, y + 1, XPOS,
|
||||
_("(if set to YES, messages about loaded "
|
||||
"and saved data will not be displayed)"));
|
||||
y += YOFF;
|
||||
mvwprintw (win, y, XPOS, "[5] %s ", opt5);
|
||||
print_option_incolor (win, conf->skip_progress_bar, y,
|
||||
XPOS + 4 + strlen (opt5));
|
||||
print_bool_option_incolor (win, conf->skip_progress_bar, y,
|
||||
XPOS + 4 + strlen (opt5));
|
||||
mvwprintw (win, y + 1, XPOS,
|
||||
_("(if set to YES, progress bar will not be displayed "
|
||||
"when saving data)"));
|
||||
y += YOFF;
|
||||
mvwprintw (win, y, XPOS, "[6] %s ", opt6);
|
||||
print_option_incolor (win, calendar_week_begins_on_monday (), y,
|
||||
XPOS + 4 + strlen (opt6));
|
||||
print_bool_option_incolor (win, calendar_week_begins_on_monday (), y,
|
||||
XPOS + 4 + strlen (opt6));
|
||||
mvwprintw (win, y + 1, XPOS,
|
||||
_("(if set to YES, monday is the first day of the week, "
|
||||
"else it is sunday)"));
|
||||
@ -770,11 +776,11 @@ print_general_options (WINDOW *win, conf_t *conf)
|
||||
mvwprintw (win, y + 1, XPOS, _("(Format to be used when entering a date: "));
|
||||
mvwprintw (win, y + 2, XPOS, _(" 1-mm/dd/yyyy, 2-dd/mm/yyyy, 3-yyyy/mm/dd)"));
|
||||
|
||||
return (y + 3);
|
||||
return y + YOFF;
|
||||
}
|
||||
|
||||
static void
|
||||
general_conf_set_scrsize (scrollwin_t *sw)
|
||||
conf_set_scrsize (scrollwin_t *sw)
|
||||
{
|
||||
sw->win.x = 0;
|
||||
sw->win.y = 0;
|
||||
@ -802,7 +808,7 @@ custom_general_config (conf_t *conf)
|
||||
char *buf = (char *) malloc (BUFSIZ);
|
||||
|
||||
clear ();
|
||||
general_conf_set_scrsize (&cwin);
|
||||
conf_set_scrsize (&cwin);
|
||||
snprintf (cwin.label, BUFSIZ, _("CalCurse %s | general options"), VERSION);
|
||||
wins_scrollwin_init (&cwin);
|
||||
wins_show (cwin.win.p, cwin.label);
|
||||
@ -819,7 +825,7 @@ custom_general_config (conf_t *conf)
|
||||
wins_reset ();
|
||||
wins_scrollwin_delete (&cwin);
|
||||
wins_scrollwin_init (&cwin);
|
||||
general_conf_set_scrsize (&cwin);
|
||||
conf_set_scrsize (&cwin);
|
||||
wins_show (cwin.win.p, cwin.label);
|
||||
cwin.first_visible_line = 0;
|
||||
delwin (win[STA].p);
|
||||
@ -833,10 +839,10 @@ custom_general_config (conf_t *conf)
|
||||
}
|
||||
break;
|
||||
case KEY_MOVE_DOWN:
|
||||
wins_scrollwin_down (&cwin);
|
||||
wins_scrollwin_down (&cwin, 1);
|
||||
break;
|
||||
case KEY_MOVE_UP:
|
||||
wins_scrollwin_up (&cwin);
|
||||
wins_scrollwin_up (&cwin, 1);
|
||||
break;
|
||||
case '1':
|
||||
conf->auto_save = !conf->auto_save;
|
||||
@ -884,3 +890,210 @@ custom_general_config (conf_t *conf)
|
||||
free (buf);
|
||||
wins_scrollwin_delete (&cwin);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
print_key_incolor (WINDOW *win, char *option, int pos_y, int pos_x)
|
||||
{
|
||||
const int color = ATTR_HIGHEST;
|
||||
|
||||
RETURN_IF (!option, _("Undefined option!"));
|
||||
custom_apply_attr (win, color);
|
||||
mvwprintw (win, pos_y, pos_x, "%s ", option);
|
||||
custom_remove_attr (win, color);
|
||||
wnoutrefresh (win);
|
||||
}
|
||||
|
||||
static int
|
||||
print_keys_bindings (WINDOW *win, int selected_row, int selected_elm, int yoff)
|
||||
{
|
||||
const int XPOS = 1;
|
||||
const int EQUALPOS = 23;
|
||||
const int KEYPOS = 25;
|
||||
int noelm, action, y;
|
||||
|
||||
noelm = y = 0;
|
||||
for (action = 0; action < NBKEYS; action++)
|
||||
{
|
||||
char actionstr[BUFSIZ];
|
||||
int nbkeys;
|
||||
|
||||
nbkeys = keys_action_count_keys (action);
|
||||
snprintf (actionstr, BUFSIZ, "%s", keys_get_label (action));
|
||||
if (action == selected_row)
|
||||
custom_apply_attr (win, ATTR_HIGHEST);
|
||||
mvwprintw (win, y, XPOS, "%s ", actionstr);
|
||||
mvwprintw (win, y, EQUALPOS, "=");
|
||||
if (nbkeys == 0)
|
||||
mvwprintw (win, y, KEYPOS, _("undefined"));
|
||||
if (action == selected_row)
|
||||
custom_remove_attr (win, ATTR_HIGHEST);
|
||||
if (nbkeys > 0)
|
||||
{
|
||||
if (action == selected_row)
|
||||
{
|
||||
char *key;
|
||||
int pos;
|
||||
|
||||
pos = KEYPOS;
|
||||
while ((key = keys_action_nkey (action, noelm)) != 0)
|
||||
{
|
||||
if (noelm == selected_elm)
|
||||
print_key_incolor (win, key, y, pos);
|
||||
else
|
||||
mvwprintw (win, y, pos, "%s ", key);
|
||||
noelm++;
|
||||
pos += strlen (key) + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mvwprintw (win, y, KEYPOS, "%s", keys_action_allkeys (action));
|
||||
}
|
||||
}
|
||||
y += yoff;
|
||||
}
|
||||
|
||||
return noelm;
|
||||
}
|
||||
|
||||
static void
|
||||
custom_keys_config_bar (void)
|
||||
{
|
||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
binding_t info = {_("Key info"), KEY_GENERIC_HELP};
|
||||
binding_t add = {_("Add key"), KEY_ADD_ITEM};
|
||||
binding_t del = {_("Del key"), KEY_DEL_ITEM};
|
||||
binding_t edit = {_("Edit key"), KEY_EDIT_ITEM};
|
||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
||||
binding_t left = {_("Prev Key"), KEY_MOVE_LEFT};
|
||||
binding_t right = {_("Next Key"), KEY_MOVE_RIGHT};
|
||||
|
||||
binding_t *binding[] = {
|
||||
&quit, &info, &add, &del, &edit, &up, &down, &left, &right
|
||||
};
|
||||
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||
|
||||
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
||||
}
|
||||
|
||||
void
|
||||
custom_keys_config (void)
|
||||
{
|
||||
scrollwin_t kwin;
|
||||
int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed;
|
||||
int keyval, used;
|
||||
char *keystr;
|
||||
WINDOW *grabwin;
|
||||
const int LINESPERKEY = 2;
|
||||
const int LABELLINES = 3;
|
||||
|
||||
clear ();
|
||||
conf_set_scrsize (&kwin);
|
||||
nbdisplayed = (kwin.win.h - LABELLINES) / LINESPERKEY;
|
||||
snprintf (kwin.label, BUFSIZ, _("CalCurse %s | keys configuration"), VERSION);
|
||||
wins_scrollwin_init (&kwin);
|
||||
wins_show (kwin.win.p, kwin.label);
|
||||
custom_keys_config_bar ();
|
||||
selrow = selelm = 0;
|
||||
nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm, LINESPERKEY);
|
||||
kwin.total_lines = NBKEYS * LINESPERKEY;
|
||||
wins_scrollwin_display (&kwin);
|
||||
firstrow = 0;
|
||||
lastrow = firstrow + nbdisplayed - 1;
|
||||
for (;;)
|
||||
{
|
||||
int ch;
|
||||
|
||||
ch = keys_getch (win[STA].p);
|
||||
switch (ch)
|
||||
{
|
||||
case KEY_MOVE_UP:
|
||||
if (selrow > 0)
|
||||
{
|
||||
selrow--;
|
||||
selelm = 0;
|
||||
if (selrow == firstrow)
|
||||
{
|
||||
firstrow--;
|
||||
lastrow--;
|
||||
wins_scrollwin_up (&kwin, LINESPERKEY);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_MOVE_DOWN:
|
||||
if (selrow < NBKEYS - 1)
|
||||
{
|
||||
selrow++;
|
||||
selelm = 0;
|
||||
if (selrow == lastrow)
|
||||
{
|
||||
firstrow++;
|
||||
lastrow++;
|
||||
wins_scrollwin_down (&kwin, LINESPERKEY);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_MOVE_LEFT:
|
||||
if (selelm > 0)
|
||||
selelm--;
|
||||
break;
|
||||
case KEY_MOVE_RIGHT:
|
||||
if (selelm < nbrowelm - 1)
|
||||
selelm++;
|
||||
break;
|
||||
case KEY_GENERIC_HELP:
|
||||
keys_popup_info (selrow);
|
||||
break;
|
||||
case KEY_ADD_ITEM:
|
||||
#define WINROW 10
|
||||
#define WINCOL 50
|
||||
do
|
||||
{
|
||||
grabwin = popup (WINROW, WINCOL, (row - WINROW) / 2,
|
||||
(col - WINCOL) / 2,
|
||||
_("Press the key you want to assign to:"),
|
||||
keys_get_label (selrow), 0);
|
||||
keyval = wgetch (grabwin);
|
||||
used = keys_assign_binding (keyval, selrow);
|
||||
if (used)
|
||||
{
|
||||
keys_e action;
|
||||
|
||||
action = keys_get_action (keyval);
|
||||
ERROR_MSG (
|
||||
_("This key is already in use for %s, "
|
||||
"please choose another one."),
|
||||
keys_get_label (action));
|
||||
werase (kwin.pad.p);
|
||||
nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm,
|
||||
LINESPERKEY);
|
||||
wins_scrollwin_display (&kwin);
|
||||
}
|
||||
delwin (grabwin);
|
||||
}
|
||||
while (used);
|
||||
selelm++;
|
||||
#undef WINROW
|
||||
#undef WINCOL
|
||||
break;
|
||||
case KEY_DEL_ITEM:
|
||||
keystr = keys_action_nkey (selrow, selelm);
|
||||
keyval = keys_str2int (keystr);
|
||||
keys_remove_binding (keyval, selrow);
|
||||
if (selelm > 0)
|
||||
selelm--;
|
||||
break;
|
||||
case KEY_EDIT_ITEM:
|
||||
break;
|
||||
case KEY_GENERIC_QUIT:
|
||||
wins_scrollwin_delete (&kwin);
|
||||
return;
|
||||
}
|
||||
custom_keys_config_bar ();
|
||||
werase (kwin.pad.p);
|
||||
nbrowelm = print_keys_bindings (kwin.pad.p, selrow, selelm, LINESPERKEY);
|
||||
wins_scrollwin_display (&kwin);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: custom.h,v 1.12 2008/04/12 21:14:03 culot Exp $ */
|
||||
/* $calcurse: custom.h,v 1.13 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -76,11 +76,12 @@ void custom_init_attr (void);
|
||||
void custom_apply_attr (WINDOW *, int);
|
||||
void custom_remove_attr (WINDOW *, int);
|
||||
void custom_load_conf (conf_t *, int);
|
||||
void config_bar (void);
|
||||
void custom_config_bar (void);
|
||||
void layout_config (void);
|
||||
void custom_color_config (void);
|
||||
void custom_color_theme_name (char *);
|
||||
void custom_confwin_init (window_t *, char *);
|
||||
void custom_general_config (conf_t *);
|
||||
void custom_keys_config (void);
|
||||
|
||||
#endif /* CALCURSE_CUSTOM_H */
|
||||
|
44
src/help.c
44
src/help.c
@ -1,4 +1,4 @@
|
||||
/* $calcurse: help.c,v 1.30 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: help.c,v 1.31 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -82,19 +82,19 @@ get_help_lines (char *text)
|
||||
* Write the desired help text inside the help pad, and return the number
|
||||
* of lines that were written.
|
||||
*/
|
||||
static int
|
||||
write_help_pad (window_t *win, help_page_t *hpage)
|
||||
int
|
||||
help_write_pad (window_t *win, char *title, char *text)
|
||||
{
|
||||
int nl_title = 0;
|
||||
int nl_text = 0;
|
||||
|
||||
nl_text = get_help_lines (hpage->text);
|
||||
nl_title = get_help_lines (hpage->title);
|
||||
nl_text = get_help_lines (text);
|
||||
nl_title = get_help_lines (title);
|
||||
erase_window_part (win->p, 0, 0, BUFSIZ, win->w);
|
||||
custom_apply_attr (win->p, ATTR_HIGHEST);
|
||||
mvwprintw (win->p, 0, 0, "%s", hpage->title);
|
||||
mvwprintw (win->p, 0, 0, "%s", title);
|
||||
custom_remove_attr (win->p, ATTR_HIGHEST);
|
||||
mvwprintw (win->p, nl_title, 0, "%s", hpage->text);
|
||||
mvwprintw (win->p, nl_title, 0, "%s", text);
|
||||
return (nl_text + nl_title);
|
||||
}
|
||||
|
||||
@ -102,21 +102,21 @@ write_help_pad (window_t *win, help_page_t *hpage)
|
||||
* Create and init help screen and its pad, which is used to make the scrolling
|
||||
* faster.
|
||||
*/
|
||||
static void
|
||||
help_wins_init (scrollwin_t *hwin)
|
||||
void
|
||||
help_wins_init (scrollwin_t *hwin, int x, int y, int h, int w)
|
||||
{
|
||||
const int PADOFFSET = 4;
|
||||
const int TITLELINES = 3;
|
||||
|
||||
hwin->win.x = 0;
|
||||
hwin->win.y = 0;
|
||||
hwin->win.h = (notify_bar ()) ? row - 3 : row - 2;
|
||||
hwin->win.w = col;
|
||||
hwin->win.x = x;
|
||||
hwin->win.y = y;
|
||||
hwin->win.h = h;
|
||||
hwin->win.w = w;
|
||||
|
||||
hwin->pad.x = PADOFFSET;
|
||||
hwin->pad.y = TITLELINES;
|
||||
hwin->pad.h = BUFSIZ;
|
||||
hwin->pad.w = col - 2 * PADOFFSET + 1;
|
||||
hwin->pad.w = hwin->win.w - 2 * PADOFFSET + 1;
|
||||
|
||||
snprintf (hwin->label, BUFSIZ, _("Calcurse %s | help"), VERSION);
|
||||
wins_scrollwin_init (hwin);
|
||||
@ -132,11 +132,11 @@ help_wins_reinit (scrollwin_t *hwin)
|
||||
{
|
||||
wins_scrollwin_delete (hwin);
|
||||
wins_get_config ();
|
||||
help_wins_init (hwin);
|
||||
help_wins_init (hwin, 0, 0, (notify_bar ()) ? row - 3 : row - 2, col);
|
||||
}
|
||||
|
||||
/* Reset the screen, needed when resizing terminal for example. */
|
||||
static void
|
||||
void
|
||||
help_wins_reset (scrollwin_t *hwin)
|
||||
{
|
||||
endwin ();
|
||||
@ -596,7 +596,7 @@ help_screen (void)
|
||||
"Send your feedback or comments to : calcurse@culot.org\n"
|
||||
"Calcurse home page : http://culot.org/calcurse");
|
||||
|
||||
help_wins_init (&hwin);
|
||||
help_wins_init (&hwin, 0, 0, (notify_bar ()) ? row - 3 : row - 2, col);
|
||||
page = oldpage = HELP_MAIN;
|
||||
need_resize = 0;
|
||||
|
||||
@ -611,16 +611,17 @@ help_screen (void)
|
||||
wins_get_config ();
|
||||
help_wins_reset (&hwin);
|
||||
hwin.first_visible_line = 0;
|
||||
hwin.total_lines = write_help_pad (&hwin.pad, &hscr[oldpage]);
|
||||
hwin.total_lines = help_write_pad (&hwin.pad, hscr[oldpage].title,
|
||||
hscr[oldpage].text);
|
||||
need_resize = 1;
|
||||
break;
|
||||
|
||||
case KEY_GENERIC_SCROLL_DOWN:
|
||||
wins_scrollwin_down (&hwin);
|
||||
wins_scrollwin_down (&hwin, 1);
|
||||
break;
|
||||
|
||||
case KEY_GENERIC_SCROLL_UP:
|
||||
wins_scrollwin_up (&hwin);
|
||||
wins_scrollwin_up (&hwin, 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -628,7 +629,8 @@ help_screen (void)
|
||||
if (page != NOPAGE)
|
||||
{
|
||||
hwin.first_visible_line = 0;
|
||||
hwin.total_lines = write_help_pad (&hwin.pad, &hscr[page]);
|
||||
hwin.total_lines = help_write_pad (&hwin.pad, hscr[page].title,
|
||||
hscr[page].text);
|
||||
oldpage = page;
|
||||
}
|
||||
break;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: help.h,v 1.5 2008/04/12 21:14:03 culot Exp $ */
|
||||
/* $calcurse: help.h,v 1.6 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -27,6 +27,8 @@
|
||||
#ifndef CALCURSE_HELP_H
|
||||
#define CALCURSE_HELP_H
|
||||
|
||||
#include "wins.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *title;
|
||||
@ -35,5 +37,8 @@ typedef struct
|
||||
help_page_t;
|
||||
|
||||
void help_screen (void);
|
||||
void help_wins_init (scrollwin_t *, int, int, int, int);
|
||||
void help_wins_reset (scrollwin_t *);
|
||||
int help_write_pad (window_t *, char *, char *);
|
||||
|
||||
#endif /* CALCURSE_HELP_H */
|
||||
|
226
src/keys.c
226
src/keys.c
@ -1,4 +1,4 @@
|
||||
/* $calcurse: keys.c,v 1.3 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: keys.c,v 1.4 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -25,9 +25,11 @@
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "custom.h"
|
||||
#include "keys.h"
|
||||
|
||||
#define MAXKEYVAL 256
|
||||
@ -104,7 +106,9 @@ dump_intro (FILE *fd)
|
||||
"# To define bindings which use the CONTROL key, prefix the key with "
|
||||
"'C-'.\n"
|
||||
"# The escape and horizontal Tab key can be specified using the 'ESC'\n"
|
||||
"# and 'TAB' keyword, respectively.\n");
|
||||
"# and 'TAB' keyword, respectively.\n#\n"
|
||||
"# A description of what each ACTION keyword is used for is available\n"
|
||||
"# from calcurse online configuration menu.\n");
|
||||
|
||||
fprintf (fd, "%s\n", intro);
|
||||
}
|
||||
@ -144,7 +148,7 @@ keys_get_label (keys_e key)
|
||||
return keydef[key].label;
|
||||
}
|
||||
|
||||
static int
|
||||
keys_e
|
||||
keys_get_action (int pressed)
|
||||
{
|
||||
if (pressed < 0 || pressed > MAXKEYVAL)
|
||||
@ -256,7 +260,9 @@ keys_str2int (char *key)
|
||||
return (int)key[0];
|
||||
else
|
||||
{
|
||||
if (!strncmp (key, CONTROL_KEY.str, CONTROL_KEY.len))
|
||||
if (key[0] == '^')
|
||||
return CTRL ((int)key[1]);
|
||||
else if (!strncmp (key, CONTROL_KEY.str, CONTROL_KEY.len))
|
||||
return CTRL ((int)key[CONTROL_KEY.len]);
|
||||
else if (!strncmp (key, TAB_KEY.str, TAB_KEY.len))
|
||||
return TAB;
|
||||
@ -270,13 +276,50 @@ keys_str2int (char *key)
|
||||
char *
|
||||
keys_int2str (int key)
|
||||
{
|
||||
return keyname (key);
|
||||
switch (key)
|
||||
{
|
||||
case TAB:
|
||||
return "TAB";
|
||||
case ESCAPE:
|
||||
return "ESC";
|
||||
default:
|
||||
return keyname (key);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
keys_action_count_keys (keys_e action)
|
||||
{
|
||||
struct key_str_s *key;
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
for (key = keys[action]; key; key = key->next)
|
||||
i++;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
char *
|
||||
keys_action_firstkey (keys_e action)
|
||||
{
|
||||
return (keys[action] != NULL) ? keys[action]->str : NULL;
|
||||
return (keys[action] != NULL) ? keys[action]->str : "XXX";
|
||||
}
|
||||
|
||||
char *
|
||||
keys_action_nkey (keys_e action, int keynum)
|
||||
{
|
||||
struct key_str_s *key;
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
for (key = keys[action]; key; key = key->next)
|
||||
{
|
||||
if (i == keynum)
|
||||
return key->str;
|
||||
i++;
|
||||
}
|
||||
return (char *)0;
|
||||
}
|
||||
|
||||
char *
|
||||
@ -298,3 +341,174 @@ keys_action_allkeys (keys_e action)
|
||||
|
||||
return keystr;
|
||||
}
|
||||
|
||||
/* Need this to display keys properly inside status bar. */
|
||||
static char *
|
||||
keys_format_label (char *key, int keylen)
|
||||
{
|
||||
static char fmtkey[BUFSIZ];
|
||||
const int len = strlen (key);
|
||||
char *dot = ".";
|
||||
int i;
|
||||
|
||||
if (keylen > BUFSIZ)
|
||||
return (char *)0;
|
||||
|
||||
bzero (fmtkey, sizeof (fmtkey));
|
||||
if (len == 0)
|
||||
snprintf (fmtkey, sizeof (fmtkey), "?");
|
||||
else if (len <= keylen)
|
||||
{
|
||||
for (i = 0; i < keylen - len; i++)
|
||||
fmtkey[i] = ' ';
|
||||
strncat (fmtkey, key, keylen);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < keylen - 1; i++)
|
||||
fmtkey[i] = key[i];
|
||||
strncat (fmtkey, dot, strlen (dot));
|
||||
}
|
||||
return fmtkey;
|
||||
}
|
||||
|
||||
void
|
||||
keys_display_bindings_bar (WINDOW *win, binding_t **binding, int first_key,
|
||||
int last_key)
|
||||
{
|
||||
int i, j, cmdlen, space_between_cmds;
|
||||
|
||||
/* Total length of a command. */
|
||||
cmdlen = KEYS_KEYLEN + 1 + KEYS_LABELEN;
|
||||
space_between_cmds = floor (col / KEYS_CMDS_PER_LINE - cmdlen);
|
||||
cmdlen += space_between_cmds;
|
||||
|
||||
j = 0;
|
||||
erase_status_bar ();
|
||||
for (i = first_key; i < last_key; i += 2)
|
||||
{
|
||||
char key[KEYS_KEYLEN + 1], *fmtkey;
|
||||
const int KEY_POS = j * cmdlen;
|
||||
const int LABEL_POS = j * cmdlen + KEYS_KEYLEN + 1;
|
||||
|
||||
strncpy (key, keys_action_firstkey (binding[i]->action), KEYS_KEYLEN);
|
||||
fmtkey = keys_format_label (key, KEYS_KEYLEN);
|
||||
custom_apply_attr (win, ATTR_HIGHEST);
|
||||
mvwprintw (win, 0, KEY_POS, fmtkey);
|
||||
if (i + 1 != last_key)
|
||||
{
|
||||
strncpy (key, keys_action_firstkey (binding[i + 1]->action),
|
||||
KEYS_KEYLEN);
|
||||
fmtkey = keys_format_label (key, KEYS_KEYLEN);
|
||||
mvwprintw (win, 1, KEY_POS, fmtkey);
|
||||
}
|
||||
custom_remove_attr (win, ATTR_HIGHEST);
|
||||
mvwprintw (win, 0, LABEL_POS, binding[i]->label);
|
||||
if (i + 1 != last_key)
|
||||
mvwprintw (win, 1, LABEL_POS, binding[i + 1]->label);
|
||||
j++;
|
||||
}
|
||||
wnoutrefresh (win);
|
||||
}
|
||||
|
||||
/*
|
||||
* Display information about the given key.
|
||||
* (could not add the keys descriptions to keydef variable, because of i18n).
|
||||
*/
|
||||
void
|
||||
keys_popup_info (keys_e key)
|
||||
{
|
||||
char *info[NBKEYS];
|
||||
WINDOW *infowin;
|
||||
|
||||
info[KEY_GENERIC_ESCAPE] =
|
||||
_("Cancel the ongoing action.");
|
||||
info[KEY_GENERIC_CREDITS] =
|
||||
_("Print general information about calcurse's authors, license, etc.");
|
||||
info[KEY_GENERIC_HELP] =
|
||||
_("Display hints whenever some help screens are available.");
|
||||
info[KEY_GENERIC_QUIT] =
|
||||
_("Exit from the current menu, or quit calcurse.");
|
||||
info[KEY_GENERIC_SAVE] =
|
||||
_("Save calcurse data.");
|
||||
info[KEY_GENERIC_CHANGE_VIEW] =
|
||||
_("Select next panel in calcurse main screen.");
|
||||
info[KEY_GENERIC_IMPORT] =
|
||||
_("Import data from an external file.");
|
||||
info[KEY_GENERIC_EXPORT] =
|
||||
_("Export data to a new file format.");
|
||||
info[KEY_GENERIC_GOTO] =
|
||||
_("Select the day to go to.");
|
||||
info[KEY_GENERIC_OTHER_CMD] =
|
||||
_("Show next possible actions inside status bar.");
|
||||
info[KEY_GENERIC_CONFIG_MENU] =
|
||||
_("Enter the configuration menu.");
|
||||
info[KEY_GENERIC_REDRAW] =
|
||||
_("Redraw calcurse's screen.");
|
||||
info[KEY_GENERIC_ADD_APPT] =
|
||||
_("Add an appointment, whichever panel is currently selected.");
|
||||
info[KEY_GENERIC_ADD_TODO] =
|
||||
_("Add a todo item, whichever panel is currently selected.");
|
||||
info[KEY_GENERIC_NEXT_DAY] =
|
||||
_("Move to next day in calendar, whichever panel is currently selected.");
|
||||
info[KEY_GENERIC_PREV_DAY] =
|
||||
_("Move to previous day in calendar, whichever panel is currently "
|
||||
"selected.");
|
||||
info[KEY_GENERIC_NEXT_WEEK] =
|
||||
_("Move to next week in calendar, whichever panel is currently selected.");
|
||||
info[KEY_GENERIC_PREV_WEEK] =
|
||||
_("Move to previous week in calendar, whichever panel is currently "
|
||||
"selected");
|
||||
info[KEY_GENERIC_SCROLL_DOWN] =
|
||||
_("Scroll window down (e.g. when displaying text inside a popup window).");
|
||||
info[KEY_GENERIC_SCROLL_UP] =
|
||||
_("Scroll window up (e.g. when displaying text inside a popup window).");
|
||||
info[KEY_GENERIC_GOTO_TODAY] =
|
||||
_("Go to today, whichever panel is selected.");
|
||||
info[KEY_MOVE_RIGHT] =
|
||||
_("Move to the right.");
|
||||
info[KEY_MOVE_LEFT] =
|
||||
_("Move to the left.");
|
||||
info[KEY_MOVE_DOWN] =
|
||||
_("Move down.");
|
||||
info[KEY_MOVE_UP] =
|
||||
_("Move up.");
|
||||
info[KEY_START_OF_WEEK] =
|
||||
_("Select the first day of the current week when inside the calendar "
|
||||
"panel.");
|
||||
info[KEY_END_OF_WEEK] =
|
||||
_("Select the last day of the current week when inside the calendar "
|
||||
"panel.");
|
||||
info[KEY_ADD_ITEM] =
|
||||
_("Add an item to the currently selected panel.");
|
||||
info[KEY_DEL_ITEM] =
|
||||
_("Delete the currently selected item.");
|
||||
info[KEY_EDIT_ITEM] =
|
||||
_("Edit the currently seleted item.");
|
||||
info[KEY_VIEW_ITEM] =
|
||||
_("Display the currently selected item inside a popup window.");
|
||||
info[KEY_FLAG_ITEM] =
|
||||
_("Flag the currently selected item as important.");
|
||||
info[KEY_REPEAT_ITEM] =
|
||||
_("Repeat an item");
|
||||
info[KEY_EDIT_NOTE] =
|
||||
_("Attach (or edit if one exists) a note to the currently selected item");
|
||||
info[KEY_VIEW_NOTE] =
|
||||
_("View the note attached to the currently selected item.");
|
||||
info[KEY_RAISE_PRIORITY] =
|
||||
_("Raise a task priority inside the todo panel.");
|
||||
info[KEY_LOWER_PRIORITY] =
|
||||
_("Lower a task priority inside the todo panel.");
|
||||
|
||||
if (key < 0 || key > NBKEYS)
|
||||
return;
|
||||
|
||||
#define WINROW 10
|
||||
#define WINCOL (col - 4)
|
||||
infowin = popup (WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2,
|
||||
keydef[key].label, info[key], 1);
|
||||
keys_getch (infowin);
|
||||
delwin (infowin);
|
||||
#undef WINROW
|
||||
#undef WINCOL
|
||||
}
|
||||
|
21
src/keys.h
21
src/keys.h
@ -1,4 +1,4 @@
|
||||
/* $calcurse: keys.h,v 1.3 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: keys.h,v 1.4 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -28,10 +28,13 @@
|
||||
#define CALCURSE_KEYS_H
|
||||
|
||||
#define CTRLVAL 0x1F
|
||||
#define TAB 9
|
||||
#define CTRL(x) ((x) & CTRLVAL)
|
||||
#define ESCAPE 27
|
||||
#define TAB 9
|
||||
|
||||
#define CTRL(x) ((x) & CTRLVAL)
|
||||
#define ESCAPE 27
|
||||
#define KEYS_KEYLEN 3 /* length of each keybinding */
|
||||
#define KEYS_LABELEN 8 /* length of command description */
|
||||
#define KEYS_CMDS_PER_LINE 6 /* max number of commands per line */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@ -79,15 +82,25 @@ typedef enum
|
||||
}
|
||||
keys_e;
|
||||
|
||||
typedef struct {
|
||||
char *label;
|
||||
keys_e action;
|
||||
} binding_t;
|
||||
|
||||
void keys_init (void);
|
||||
void keys_dump_defaults (char *);
|
||||
char *keys_get_label (keys_e);
|
||||
keys_e keys_get_action (int);
|
||||
keys_e keys_getch (WINDOW *win);
|
||||
int keys_assign_binding (int, keys_e);
|
||||
void keys_remove_binding (int, keys_e);
|
||||
int keys_str2int (char *);
|
||||
char *keys_int2str (int);
|
||||
int keys_action_count_keys (keys_e);
|
||||
char *keys_action_firstkey (keys_e);
|
||||
char *keys_action_nkey (keys_e, int);
|
||||
char *keys_action_allkeys (keys_e);
|
||||
void keys_display_bindings_bar (WINDOW *, binding_t **, int, int);
|
||||
void keys_popup_info (keys_e);
|
||||
|
||||
#endif /* CALCURSE_KEYS_H */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: notify.c,v 1.28 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: notify.c,v 1.29 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -479,7 +479,7 @@ notify_print_options (WINDOW *optwin, int col)
|
||||
x = x_pos + x_offset + l;
|
||||
mvwprintw (optwin, y_pos, x_pos, "[1] %s", opt[SHOW].name);
|
||||
erase_window_part (optwin, x, y_pos, maxcol, y_pos);
|
||||
print_option_incolor (optwin, nbar->show, y_pos, x);
|
||||
print_bool_option_incolor (optwin, nbar->show, y_pos, x);
|
||||
mvwprintw (optwin, y_pos + 1, x_pos, opt[SHOW].desc);
|
||||
|
||||
for (i = 1; i < NB_OPT; i++)
|
||||
|
104
src/utils.c
104
src/utils.c
@ -1,4 +1,4 @@
|
||||
/* $calcurse: utils.c,v 1.53 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: utils.c,v 1.54 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -45,12 +45,6 @@
|
||||
#define NB_TOD_CMDS 30 /* same thing while in todo view */
|
||||
#define TOTAL_CMDS NB_CAL_CMDS + NB_APP_CMDS + NB_TOD_CMDS
|
||||
#define CMDS_PER_LINE 6 /* max number of commands per line */
|
||||
#define KEY_LENGTH 4 /* length of each keybinding + one space */
|
||||
|
||||
typedef struct {
|
||||
char *label;
|
||||
keys_e action;
|
||||
} binding_t;
|
||||
|
||||
static unsigned status_page;
|
||||
|
||||
@ -122,10 +116,7 @@ warnbox (const char *msg)
|
||||
return;
|
||||
strncpy (displmsg, msg, MSGLEN);
|
||||
warnwin = popup (WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2,
|
||||
"/!\\");
|
||||
custom_apply_attr (warnwin, ATTR_HIGHEST);
|
||||
mvwprintw (warnwin, 5, (WINCOL - strlen (displmsg)) / 2, "%s", displmsg);
|
||||
custom_remove_attr (warnwin, ATTR_HIGHEST);
|
||||
"/!\\", displmsg, 1);
|
||||
wrefresh (warnwin);
|
||||
keys_getch (warnwin);
|
||||
delwin (warnwin);
|
||||
@ -172,24 +163,30 @@ erase_window_part (WINDOW *win, int first_col, int first_row, int last_col,
|
||||
|
||||
/* draws a popup window */
|
||||
WINDOW *
|
||||
popup (int pop_row, int pop_col, int pop_y, int pop_x, char *pop_lab)
|
||||
popup (int pop_row, int pop_col, int pop_y, int pop_x, char *title, char *msg,
|
||||
int hint)
|
||||
{
|
||||
char *txt_pop = _("Press any key to continue...");
|
||||
char *any_key = _("Press any key to continue...");
|
||||
char label[BUFSIZ];
|
||||
WINDOW *popup_win;
|
||||
const int MSGXPOS = 5;
|
||||
|
||||
popup_win = newwin (pop_row, pop_col, pop_y, pop_x);
|
||||
keypad (popup_win, TRUE);
|
||||
custom_apply_attr (popup_win, ATTR_HIGHEST);
|
||||
box (popup_win, 0, 0);
|
||||
snprintf (label, BUFSIZ, "%s", pop_lab);
|
||||
snprintf (label, BUFSIZ, "%s", title);
|
||||
wins_show (popup_win, label);
|
||||
mvwprintw (popup_win, pop_row - 2, pop_col - (strlen (txt_pop) + 1), "%s",
|
||||
txt_pop);
|
||||
if (msg)
|
||||
mvwprintw (popup_win, MSGXPOS, (pop_col - strlen (msg)) / 2, "%s", msg);
|
||||
if (hint)
|
||||
mvwprintw (popup_win, pop_row - 2, pop_col - (strlen (any_key) + 1), "%s",
|
||||
any_key);
|
||||
custom_remove_attr (popup_win, ATTR_HIGHEST);
|
||||
wnoutrefresh (popup_win);
|
||||
wrefresh (popup_win);
|
||||
doupdate ();
|
||||
return (popup_win);
|
||||
|
||||
return popup_win;
|
||||
}
|
||||
|
||||
/* prints in middle of a panel */
|
||||
@ -442,32 +439,6 @@ is_all_digit (char *string)
|
||||
return (all_digit);
|
||||
}
|
||||
|
||||
/* Need this to display keys properly inside status bar. */
|
||||
static char *
|
||||
format_key (char *key)
|
||||
{
|
||||
static char fmtkey[KEY_LENGTH];
|
||||
|
||||
switch (strlen (key))
|
||||
{
|
||||
case 0:
|
||||
snprintf (fmtkey, KEY_LENGTH, " ?");
|
||||
case 1:
|
||||
snprintf (fmtkey, KEY_LENGTH, " %s", key);
|
||||
break;
|
||||
case 2:
|
||||
snprintf (fmtkey, KEY_LENGTH, " %s", key);
|
||||
break;
|
||||
case 3:
|
||||
snprintf (fmtkey, KEY_LENGTH, "%s", key);
|
||||
break;
|
||||
default:
|
||||
snprintf (fmtkey, KEY_LENGTH, "%c%c.", key[0], key[1]);
|
||||
/* NOTREACHED */
|
||||
}
|
||||
return fmtkey;
|
||||
}
|
||||
|
||||
/*
|
||||
* Draws the status bar.
|
||||
* To add a keybinding, insert a new binding_t item, add it in the *binding
|
||||
@ -479,7 +450,7 @@ status_bar (void)
|
||||
{
|
||||
#define NB_PANELS 3 /* 3 panels: CALENDAR, APPOINTMENT, TODO */
|
||||
window_e which_pan;
|
||||
int cmd_length, space_between_cmds, start, end, i, j;
|
||||
int start, end;
|
||||
const int pos[NB_PANELS + 1] =
|
||||
{ 0, NB_CAL_CMDS, NB_CAL_CMDS + NB_APP_CMDS, TOTAL_CMDS };
|
||||
|
||||
@ -533,44 +504,11 @@ status_bar (void)
|
||||
&gnweek, &gpweek, &togo, &othr, &today, &conf, &appt, &todo, &crdts, &othr
|
||||
};
|
||||
|
||||
#define LABEL_LENGTH 8 /* length of command description */
|
||||
/* 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_status_bar ();
|
||||
which_pan = wins_slctd ();
|
||||
start = pos[which_pan] + 2 * CMDS_PER_LINE * (status_page - 1);
|
||||
end = MIN (start + 2 * CMDS_PER_LINE, pos[which_pan + 1]);
|
||||
j = 0;
|
||||
for (i = start; i < end; i += 2)
|
||||
{
|
||||
char key[KEY_LENGTH], *fmtkey;
|
||||
|
||||
strncpy (key, keys_action_firstkey (binding[i]->action), KEY_LENGTH);
|
||||
fmtkey = format_key (key);
|
||||
custom_apply_attr (win[STA].p, ATTR_HIGHEST);
|
||||
mvwprintw (win[STA].p, 0, j * cmd_length, fmtkey);
|
||||
if (i + 1 != end)
|
||||
{
|
||||
strncpy (key, keys_action_firstkey (binding[i + 1]->action),
|
||||
KEY_LENGTH);
|
||||
fmtkey = format_key (key);
|
||||
mvwprintw (win[STA].p, 1, j * cmd_length, fmtkey);
|
||||
}
|
||||
custom_remove_attr (win[STA].p, ATTR_HIGHEST);
|
||||
mvwprintw (win[STA].p, 0, j * cmd_length + KEY_LENGTH,
|
||||
binding[i]->label);
|
||||
if (i + 1 != end)
|
||||
mvwprintw (win[STA].p, 1, j * cmd_length + KEY_LENGTH,
|
||||
binding[i + 1]->label);
|
||||
j++;
|
||||
}
|
||||
wnoutrefresh (win[STA].p);
|
||||
#undef LABEL_LENGTH
|
||||
#undef NB_PANELS
|
||||
start = pos[which_pan] + 2 * KEYS_CMDS_PER_LINE * (status_page - 1);
|
||||
end = MIN (start + 2 * KEYS_CMDS_PER_LINE, pos[which_pan + 1]);
|
||||
keys_display_bindings_bar (win[STA].p, binding, start, end);
|
||||
}
|
||||
|
||||
long
|
||||
@ -810,7 +748,7 @@ item_in_popup (char *saved_a_start, char *saved_a_end, char *msg,
|
||||
const int padl = winl - 2, padw = winw - margin_left;
|
||||
|
||||
pad = newpad (padl, padw);
|
||||
popup_win = popup (winl, winw, 1, 2, pop_title);
|
||||
popup_win = popup (winl, winw, 1, 2, pop_title, (char *)0, 1);
|
||||
if (strncmp (pop_title, _("Appointment"), 11) == 0)
|
||||
{
|
||||
mvwprintw (popup_win, margin_top, margin_left, "- %s -> %s",
|
||||
@ -923,7 +861,7 @@ mystrtol (const char *str)
|
||||
|
||||
/* Print the given option value with appropriate color. */
|
||||
void
|
||||
print_option_incolor (WINDOW *win, bool option, int pos_y, int pos_x)
|
||||
print_bool_option_incolor (WINDOW *win, bool option, int pos_y, int pos_x)
|
||||
{
|
||||
int color = 0;
|
||||
char option_value[BUFSIZ] = "";
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: utils.h,v 1.38 2008/11/16 17:42:53 culot Exp $ */
|
||||
/* $calcurse: utils.h,v 1.39 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -118,7 +118,7 @@ void warnbox (const char *);
|
||||
void status_mesg (char *, char *);
|
||||
void erase_status_bar (void);
|
||||
void erase_window_part (WINDOW *, int, int, int, int);
|
||||
WINDOW *popup (int, int, int, int, char *);
|
||||
WINDOW *popup (int, int, int, int, char *, char *, int);
|
||||
void print_in_middle (WINDOW *, int, int, int, char *);
|
||||
int getstring (WINDOW *, char *, int, int, int);
|
||||
int updatestring (WINDOW *, char **, int, int);
|
||||
@ -141,7 +141,7 @@ long get_today (void);
|
||||
long now (void);
|
||||
char *mycpy (const char *);
|
||||
long mystrtol (const char *);
|
||||
void print_option_incolor (WINDOW *, bool, int, int);
|
||||
void print_bool_option_incolor (WINDOW *, bool, int, int);
|
||||
char *new_tempfile (const char *, int);
|
||||
void erase_note (char **, erase_flag_e);
|
||||
int parse_date (char *, int, int *, int *, int *);
|
||||
|
10
src/wins.c
10
src/wins.c
@ -1,4 +1,4 @@
|
||||
/* $calcurse: wins.c,v 1.17 2008/09/20 12:47:06 culot Exp $ */
|
||||
/* $calcurse: wins.c,v 1.18 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -170,18 +170,18 @@ wins_scrollwin_display (scrollwin_t *sw)
|
||||
}
|
||||
|
||||
void
|
||||
wins_scrollwin_up (scrollwin_t *sw)
|
||||
wins_scrollwin_up (scrollwin_t *sw, int amount)
|
||||
{
|
||||
if (sw->first_visible_line > 0)
|
||||
sw->first_visible_line--;
|
||||
sw->first_visible_line -= amount;
|
||||
}
|
||||
|
||||
void
|
||||
wins_scrollwin_down (scrollwin_t *sw)
|
||||
wins_scrollwin_down (scrollwin_t *sw, int amount)
|
||||
{
|
||||
if (sw->total_lines
|
||||
> (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
|
||||
sw->first_visible_line++;
|
||||
sw->first_visible_line += amount;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: wins.h,v 1.9 2008/04/19 09:22:14 culot Exp $ */
|
||||
/* $calcurse: wins.h,v 1.10 2008/11/23 20:38:56 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -72,8 +72,8 @@ void wins_init (void);
|
||||
void wins_scrollwin_init (scrollwin_t *);
|
||||
void wins_scrollwin_delete (scrollwin_t *);
|
||||
void wins_scrollwin_display (scrollwin_t *);
|
||||
void wins_scrollwin_up (scrollwin_t *);
|
||||
void wins_scrollwin_down (scrollwin_t *);
|
||||
void wins_scrollwin_up (scrollwin_t *, int);
|
||||
void wins_scrollwin_down (scrollwin_t *, int);
|
||||
void wins_reinit (void);
|
||||
void wins_show (WINDOW *, char *);
|
||||
void wins_get_config (void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user