Drop legacy online help system
Remove the old online help system and change the generic help key to do the same thing as ":help". This also removes some context-sensitive help. We should think about re-adding support for this later. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
08f5064ef7
commit
20709b7a7e
@ -19,7 +19,6 @@ calcurse_SOURCES = \
|
|||||||
day.c \
|
day.c \
|
||||||
event.c \
|
event.c \
|
||||||
getstring.c \
|
getstring.c \
|
||||||
help.c \
|
|
||||||
ical.c \
|
ical.c \
|
||||||
io.c \
|
io.c \
|
||||||
keys.c \
|
keys.c \
|
||||||
|
@ -278,8 +278,7 @@ static inline void key_view_note(void)
|
|||||||
|
|
||||||
static inline void key_generic_help(void)
|
static inline void key_generic_help(void)
|
||||||
{
|
{
|
||||||
wins_status_bar();
|
wins_launch_external(DOCDIR "/intro.txt", conf.pager);
|
||||||
help_screen();
|
|
||||||
wins_update(FLAG_ALL);
|
wins_update(FLAG_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -719,10 +719,6 @@ struct event *event_scan(FILE *, struct tm, int, char *);
|
|||||||
void event_delete(struct event *);
|
void event_delete(struct event *);
|
||||||
void event_paste_item(struct event *, long);
|
void event_paste_item(struct event *, long);
|
||||||
|
|
||||||
/* help.c */
|
|
||||||
void help_wins_init(struct scrollwin *, int, int, int, int);
|
|
||||||
void help_screen(void);
|
|
||||||
|
|
||||||
/* getstring.c */
|
/* getstring.c */
|
||||||
enum getstr getstring(WINDOW *, char *, int, int, int);
|
enum getstr getstring(WINDOW *, char *, int, int, int);
|
||||||
int updatestring(WINDOW *, char **, int, int);
|
int updatestring(WINDOW *, char **, int, int);
|
||||||
|
39
src/custom.c
39
src/custom.c
@ -208,18 +208,9 @@ static void display_layout_config(struct window *lwin, int mark,
|
|||||||
/* Choose the layout */
|
/* Choose the layout */
|
||||||
void custom_layout_config(void)
|
void custom_layout_config(void)
|
||||||
{
|
{
|
||||||
struct scrollwin hwin;
|
|
||||||
struct window conf_win;
|
struct window conf_win;
|
||||||
int ch, mark, cursor, need_reset;
|
int ch, mark, cursor, need_reset;
|
||||||
const char *label = _("layout configuration");
|
const char *label = _("layout configuration");
|
||||||
const char *help_text =
|
|
||||||
_("With this configuration menu, one can choose where panels will be\n"
|
|
||||||
"displayed inside calcurse screen. \n"
|
|
||||||
"It is possible to choose between eight different configurations.\n"
|
|
||||||
"\nIn the configuration representations, letters correspond to:\n\n"
|
|
||||||
" 'c' -> calendar panel\n\n"
|
|
||||||
" 'a' -> appointment panel\n\n"
|
|
||||||
" 't' -> todo panel\n\n");
|
|
||||||
|
|
||||||
conf_win.p = NULL;
|
conf_win.p = NULL;
|
||||||
custom_confwin_init(&conf_win, label);
|
custom_confwin_init(&conf_win, label);
|
||||||
@ -231,18 +222,6 @@ void custom_layout_config(void)
|
|||||||
keys_getch(win[KEY].p, NULL, NULL)) != KEY_GENERIC_QUIT) {
|
keys_getch(win[KEY].p, NULL, NULL)) != KEY_GENERIC_QUIT) {
|
||||||
need_reset = 0;
|
need_reset = 0;
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case KEY_GENERIC_HELP:
|
|
||||||
help_wins_init(&hwin, 0, 0,
|
|
||||||
(notify_bar())? row - 3 : row - 2,
|
|
||||||
col);
|
|
||||||
mvwprintw(hwin.pad.p, 1, 0, help_text,
|
|
||||||
SBARMINWIDTH);
|
|
||||||
hwin.total_lines = 7;
|
|
||||||
wins_scrollwin_display(&hwin);
|
|
||||||
wgetch(hwin.win.p);
|
|
||||||
wins_scrollwin_delete(&hwin);
|
|
||||||
need_reset = 1;
|
|
||||||
break;
|
|
||||||
case KEY_GENERIC_SELECT:
|
case KEY_GENERIC_SELECT:
|
||||||
mark = cursor;
|
mark = cursor;
|
||||||
break;
|
break;
|
||||||
@ -290,7 +269,6 @@ void custom_layout_config(void)
|
|||||||
/* Sidebar configuration screen. */
|
/* Sidebar configuration screen. */
|
||||||
void custom_sidebar_config(void)
|
void custom_sidebar_config(void)
|
||||||
{
|
{
|
||||||
struct scrollwin hwin;
|
|
||||||
struct binding quit = { _("Exit"), KEY_GENERIC_QUIT };
|
struct binding quit = { _("Exit"), KEY_GENERIC_QUIT };
|
||||||
struct binding inc = { _("Width +"), KEY_MOVE_UP };
|
struct binding inc = { _("Width +"), KEY_MOVE_UP };
|
||||||
struct binding dec = { _("Width -"), KEY_MOVE_DOWN };
|
struct binding dec = { _("Width -"), KEY_MOVE_DOWN };
|
||||||
@ -298,13 +276,6 @@ void custom_sidebar_config(void)
|
|||||||
struct binding *bindings[] = {
|
struct binding *bindings[] = {
|
||||||
&inc, &dec, &help, &quit
|
&inc, &dec, &help, &quit
|
||||||
};
|
};
|
||||||
const char *help_text =
|
|
||||||
_("This configuration screen is used to change the width of the side bar.\n"
|
|
||||||
"The side bar is the part of the screen which contains two panels:\n"
|
|
||||||
"the calendar and, depending on the chosen layout, either the todo list\n"
|
|
||||||
"or the appointment list.\n\n"
|
|
||||||
"The side bar width can be up to 50%% of the total screen width, but\n"
|
|
||||||
"can't be smaller than %d characters wide.\n\n");
|
|
||||||
int ch, bindings_size;
|
int ch, bindings_size;
|
||||||
|
|
||||||
bindings_size = ARRAY_SIZE(bindings);
|
bindings_size = ARRAY_SIZE(bindings);
|
||||||
@ -322,16 +293,6 @@ void custom_sidebar_config(void)
|
|||||||
case KEY_MOVE_DOWN:
|
case KEY_MOVE_DOWN:
|
||||||
wins_sbar_wdec();
|
wins_sbar_wdec();
|
||||||
break;
|
break;
|
||||||
case KEY_GENERIC_HELP:
|
|
||||||
help_wins_init(&hwin, 0, 0,
|
|
||||||
(notify_bar())? row - 3 : row - 2,
|
|
||||||
col);
|
|
||||||
mvwaddstr(hwin.pad.p, 1, 0, help_text);
|
|
||||||
hwin.total_lines = 6;
|
|
||||||
wins_scrollwin_display(&hwin);
|
|
||||||
wgetch(hwin.win.p);
|
|
||||||
wins_scrollwin_delete(&hwin);
|
|
||||||
break;
|
|
||||||
case KEY_RESIZE:
|
case KEY_RESIZE:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
804
src/help.c
804
src/help.c
@ -1,804 +0,0 @@
|
|||||||
/*
|
|
||||||
* Calcurse - text-based organizer
|
|
||||||
*
|
|
||||||
* Copyright (c) 2004-2013 calcurse Development Team <misc@calcurse.org>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
*
|
|
||||||
* - Redistributions of source code must retain the above
|
|
||||||
* copyright notice, this list of conditions and the
|
|
||||||
* following disclaimer.
|
|
||||||
*
|
|
||||||
* - Redistributions in binary form must reproduce the above
|
|
||||||
* copyright notice, this list of conditions and the
|
|
||||||
* following disclaimer in the documentation and/or other
|
|
||||||
* materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* Send your feedback or comments to : misc@calcurse.org
|
|
||||||
* Calcurse home page : http://calcurse.org
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#include "calcurse.h"
|
|
||||||
|
|
||||||
#define HELPTEXTSIZ 4096
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *title;
|
|
||||||
char text[HELPTEXTSIZ];
|
|
||||||
} help_page_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
HELP_MAIN,
|
|
||||||
HELP_SAVE,
|
|
||||||
HELP_IMPORT,
|
|
||||||
HELP_EXPORT,
|
|
||||||
HELP_DISPLACEMENT,
|
|
||||||
HELP_VIEW,
|
|
||||||
HELP_PIPE,
|
|
||||||
HELP_TAB,
|
|
||||||
HELP_GOTO,
|
|
||||||
HELP_DELETE,
|
|
||||||
HELP_ADD,
|
|
||||||
HELP_COPY_PASTE,
|
|
||||||
HELP_EDIT,
|
|
||||||
HELP_ENOTE,
|
|
||||||
HELP_VNOTE,
|
|
||||||
HELP_PRIORITY,
|
|
||||||
HELP_REPEAT,
|
|
||||||
HELP_FLAG,
|
|
||||||
HELP_CONFIG,
|
|
||||||
HELP_GENERAL,
|
|
||||||
HELP_OTHER,
|
|
||||||
HELP_CREDITS,
|
|
||||||
HELPSCREENS,
|
|
||||||
NOPAGE
|
|
||||||
} help_pages_e;
|
|
||||||
|
|
||||||
/* Returns the number of lines in an help text. */
|
|
||||||
static int get_help_lines(char *text)
|
|
||||||
{
|
|
||||||
int i, newline;
|
|
||||||
|
|
||||||
newline = 0;
|
|
||||||
for (i = 0; text[i]; i++) {
|
|
||||||
if (text[i] == '\n')
|
|
||||||
newline++;
|
|
||||||
}
|
|
||||||
return newline + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Write the desired help text inside the help pad, and return the number
|
|
||||||
* of lines that were written.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
help_write_pad(struct window *win, char *title, char *text,
|
|
||||||
enum key action)
|
|
||||||
{
|
|
||||||
int colnum, rownum;
|
|
||||||
const char *bindings_title = _("key bindings: %s");
|
|
||||||
char *bindings;
|
|
||||||
|
|
||||||
colnum = 0;
|
|
||||||
rownum = 0;
|
|
||||||
erase_window_part(win->p, rownum, colnum, BUFSIZ, win->w);
|
|
||||||
custom_apply_attr(win->p, ATTR_HIGHEST);
|
|
||||||
mvwaddstr(win->p, rownum, colnum, title);
|
|
||||||
if ((int)action != KEY_RESIZE && action < NBKEYS) {
|
|
||||||
switch (action) {
|
|
||||||
case KEY_END_OF_WEEK:
|
|
||||||
case KEY_START_OF_WEEK:
|
|
||||||
case KEY_MOVE_UP:
|
|
||||||
case KEY_MOVE_DOWN:
|
|
||||||
case KEY_MOVE_RIGHT:
|
|
||||||
case KEY_MOVE_LEFT:
|
|
||||||
case KEY_GENERIC_HELP:
|
|
||||||
case KEY_GENERIC_REDRAW:
|
|
||||||
case KEY_GENERIC_ADD_APPT:
|
|
||||||
case KEY_GENERIC_ADD_TODO:
|
|
||||||
case KEY_GENERIC_PREV_DAY:
|
|
||||||
case KEY_GENERIC_NEXT_DAY:
|
|
||||||
case KEY_GENERIC_PREV_WEEK:
|
|
||||||
case KEY_GENERIC_NEXT_WEEK:
|
|
||||||
case KEY_GENERIC_PREV_MONTH:
|
|
||||||
case KEY_GENERIC_NEXT_MONTH:
|
|
||||||
case KEY_GENERIC_PREV_YEAR:
|
|
||||||
case KEY_GENERIC_NEXT_YEAR:
|
|
||||||
case KEY_GENERIC_GOTO_TODAY:
|
|
||||||
case KEY_GENERIC_CREDITS:
|
|
||||||
case KEY_GENERIC_COPY:
|
|
||||||
case KEY_GENERIC_PASTE:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
bindings = keys_action_allkeys(action);
|
|
||||||
|
|
||||||
if (bindings) {
|
|
||||||
colnum =
|
|
||||||
win->w - strlen(bindings_title) -
|
|
||||||
strlen(bindings);
|
|
||||||
mvwprintw(win->p, rownum, colnum,
|
|
||||||
bindings_title, bindings);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
colnum = 0;
|
|
||||||
rownum += get_help_lines(title);
|
|
||||||
custom_remove_attr(win->p, ATTR_HIGHEST);
|
|
||||||
mvwaddstr(win->p, rownum, colnum, text);
|
|
||||||
rownum += get_help_lines(text);
|
|
||||||
return rownum;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create and init help screen and its pad, which is used to make the scrolling
|
|
||||||
* faster.
|
|
||||||
*/
|
|
||||||
void help_wins_init(struct scrollwin *hwin, int x, int y, int h, int w)
|
|
||||||
{
|
|
||||||
const int PADOFFSET = 4;
|
|
||||||
const int TITLELINES = 3;
|
|
||||||
|
|
||||||
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 = hwin->win.w - 2 * PADOFFSET + 1;
|
|
||||||
|
|
||||||
hwin->label = _("Calcurse help");
|
|
||||||
wins_scrollwin_init(hwin);
|
|
||||||
wins_show(hwin->win.p, hwin->label);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Delete the existing windows and recreate them with their new
|
|
||||||
* size and placement.
|
|
||||||
*/
|
|
||||||
static void help_wins_reinit(struct scrollwin *hwin)
|
|
||||||
{
|
|
||||||
wins_scrollwin_delete(hwin);
|
|
||||||
wins_get_config();
|
|
||||||
help_wins_init(hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reset the screen, needed when resizing terminal for example. */
|
|
||||||
static void help_wins_reset(struct scrollwin *hwin)
|
|
||||||
{
|
|
||||||
endwin();
|
|
||||||
wins_refresh();
|
|
||||||
curs_set(0);
|
|
||||||
delwin(win[STA].p);
|
|
||||||
help_wins_reinit(hwin);
|
|
||||||
win[STA].p =
|
|
||||||
newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x);
|
|
||||||
keypad(win[STA].p, TRUE);
|
|
||||||
if (notify_bar())
|
|
||||||
notify_reinit_bar();
|
|
||||||
wins_status_bar();
|
|
||||||
if (notify_bar())
|
|
||||||
notify_update_bar();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Association between a key pressed and its corresponding help page. */
|
|
||||||
static int wanted_page(int ch)
|
|
||||||
{
|
|
||||||
int page;
|
|
||||||
|
|
||||||
switch (ch) {
|
|
||||||
|
|
||||||
case KEY_GENERIC_HELP:
|
|
||||||
page = HELP_MAIN;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_FLAG_ITEM:
|
|
||||||
page = HELP_FLAG;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_REDRAW:
|
|
||||||
case KEY_GENERIC_ADD_APPT:
|
|
||||||
case KEY_GENERIC_ADD_TODO:
|
|
||||||
case KEY_GENERIC_PREV_DAY:
|
|
||||||
case KEY_GENERIC_NEXT_DAY:
|
|
||||||
case KEY_GENERIC_PREV_WEEK:
|
|
||||||
case KEY_GENERIC_NEXT_WEEK:
|
|
||||||
case KEY_GENERIC_PREV_MONTH:
|
|
||||||
case KEY_GENERIC_NEXT_MONTH:
|
|
||||||
case KEY_GENERIC_PREV_YEAR:
|
|
||||||
case KEY_GENERIC_NEXT_YEAR:
|
|
||||||
case KEY_GENERIC_GOTO_TODAY:
|
|
||||||
page = HELP_GENERAL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_SAVE:
|
|
||||||
page = HELP_SAVE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_IMPORT:
|
|
||||||
page = HELP_IMPORT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_EXPORT:
|
|
||||||
page = HELP_EXPORT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_END_OF_WEEK:
|
|
||||||
case KEY_START_OF_WEEK:
|
|
||||||
case KEY_MOVE_UP:
|
|
||||||
case KEY_MOVE_DOWN:
|
|
||||||
case KEY_MOVE_RIGHT:
|
|
||||||
case KEY_MOVE_LEFT:
|
|
||||||
page = HELP_DISPLACEMENT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_ADD_ITEM:
|
|
||||||
page = HELP_ADD;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_GOTO:
|
|
||||||
page = HELP_GOTO;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_DEL_ITEM:
|
|
||||||
page = HELP_DELETE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_COPY:
|
|
||||||
case KEY_GENERIC_PASTE:
|
|
||||||
page = HELP_COPY_PASTE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_EDIT_ITEM:
|
|
||||||
page = HELP_EDIT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_EDIT_NOTE:
|
|
||||||
page = HELP_ENOTE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_VIEW_NOTE:
|
|
||||||
page = HELP_VNOTE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_CONFIG_MENU:
|
|
||||||
page = HELP_CONFIG;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_OTHER_CMD:
|
|
||||||
page = HELP_OTHER;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_REPEAT_ITEM:
|
|
||||||
page = HELP_REPEAT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_VIEW_ITEM:
|
|
||||||
page = HELP_VIEW;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_PIPE_ITEM:
|
|
||||||
page = HELP_PIPE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_RAISE_PRIORITY:
|
|
||||||
case KEY_LOWER_PRIORITY:
|
|
||||||
page = HELP_PRIORITY;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_CHANGE_VIEW:
|
|
||||||
page = HELP_TAB;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_CREDITS:
|
|
||||||
page = HELP_CREDITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
page = NOPAGE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return page;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Draws the help screen */
|
|
||||||
void help_screen(void)
|
|
||||||
{
|
|
||||||
enum {
|
|
||||||
MOVE_UP,
|
|
||||||
MOVE_DOWN,
|
|
||||||
MOVE_LEFT,
|
|
||||||
MOVE_RIGHT,
|
|
||||||
DIRECTIONS
|
|
||||||
};
|
|
||||||
struct scrollwin hwin;
|
|
||||||
int need_resize;
|
|
||||||
enum key ch = KEY_GENERIC_HELP;
|
|
||||||
int page, oldpage;
|
|
||||||
help_page_t hscr[HELPSCREENS];
|
|
||||||
char keystr[DIRECTIONS][BUFSIZ];
|
|
||||||
|
|
||||||
hscr[HELP_MAIN].title =
|
|
||||||
_(" Welcome to Calcurse. This is the main help screen.\n");
|
|
||||||
snprintf(hscr[HELP_MAIN].text, HELPTEXTSIZ,
|
|
||||||
_("Moving around: Press '%s' or '%s' to scroll text upward or downward\n"
|
|
||||||
" inside help screens, if necessary.\n\n"
|
|
||||||
" Exit help: When finished, press '%s' to exit help and go back to\n"
|
|
||||||
" the main Calcurse screen.\n\n"
|
|
||||||
" Help topic: At the bottom of this screen you can see a panel with\n"
|
|
||||||
" different fields, represented by a letter and a short\n"
|
|
||||||
" title. This panel contains all the available actions\n"
|
|
||||||
" you can perform when using Calcurse.\n"
|
|
||||||
" By pressing one of the letters appearing in this\n"
|
|
||||||
" panel, you will be shown a short description of the\n"
|
|
||||||
" corresponding action. At the top right side of the\n"
|
|
||||||
" description screen are indicated the user-defined key\n"
|
|
||||||
" bindings that lead to the action.\n\n"
|
|
||||||
" Credits: Press '%s' for credits."),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_SCROLL_UP),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_SCROLL_DOWN),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_QUIT),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_CREDITS));
|
|
||||||
|
|
||||||
hscr[HELP_SAVE].title = _("Save\n");
|
|
||||||
snprintf(hscr[HELP_SAVE].text, HELPTEXTSIZ,
|
|
||||||
_("Save calcurse data.\n"
|
|
||||||
"Data are splitted into four different files which contain :"
|
|
||||||
"\n\n"
|
|
||||||
" / ~/.calcurse/conf -> user configuration\n"
|
|
||||||
" | (layout, color, general options)\n"
|
|
||||||
" | ~/.calcurse/apts -> data related to the appointments\n"
|
|
||||||
" | ~/.calcurse/todo -> data related to the todo list\n"
|
|
||||||
" \\ ~/.calcurse/keys -> user-defined key bindings\n"
|
|
||||||
"\nIn the config menu, you can choose to save the Calcurse data\n"
|
|
||||||
"automatically before quitting."));
|
|
||||||
|
|
||||||
hscr[HELP_IMPORT].title = _("Import\n");
|
|
||||||
snprintf(hscr[HELP_IMPORT].text, HELPTEXTSIZ,
|
|
||||||
_("Import data from an icalendar file.\n"
|
|
||||||
"You will be asked to enter the file name from which to load ical\n"
|
|
||||||
"items. At the end of the import process, and if the general option\n"
|
|
||||||
"'system_dialogs' is set to 'yes', a report indicating how many items\n"
|
|
||||||
"were imported is shown.\n"
|
|
||||||
"This report contains the total number of lines read, the number of\n"
|
|
||||||
"appointments, events and todo items which were successfully imported,\n"
|
|
||||||
"together with the number of items for which problems occured and that\n"
|
|
||||||
"were skipped, if any.\n\n"
|
|
||||||
"If one or more items could not be imported, one has the possibility to\n"
|
|
||||||
"read the import process report in order to identify which problems\n"
|
|
||||||
"occured.\n"
|
|
||||||
"In this report is shown one item per line, with the line in the input\n"
|
|
||||||
"stream at which this item begins, together with the description of why\n"
|
|
||||||
"the item could not be imported.\n"));
|
|
||||||
|
|
||||||
hscr[HELP_EXPORT].title = _("Export\n");
|
|
||||||
snprintf(hscr[HELP_EXPORT].text, HELPTEXTSIZ,
|
|
||||||
_("Export calcurse data (appointments, events and todos).\n"
|
|
||||||
"This leads to the export submenu, from which you can choose between\n"
|
|
||||||
"two different export formats: 'ical' and 'pcal'. Choosing one of\n"
|
|
||||||
"those formats lets you export calcurse data to icalendar or pcal\n"
|
|
||||||
"format.\n\n"
|
|
||||||
"You first need to specify the file to which the data will be exported.\n"
|
|
||||||
"By default, this file is:\n\n" " ~/calcurse.ics\n\n"
|
|
||||||
"for an ical export, and:\n\n" " ~/calcurse.txt\n\n"
|
|
||||||
"for a pcal export.\n\n"
|
|
||||||
"Calcurse data are exported in the following order:\n"
|
|
||||||
" events, appointments, todos.\n"));
|
|
||||||
|
|
||||||
strncpy(keystr[MOVE_UP], keys_action_allkeys(KEY_MOVE_UP), BUFSIZ);
|
|
||||||
strncpy(keystr[MOVE_DOWN], keys_action_allkeys(KEY_MOVE_DOWN),
|
|
||||||
BUFSIZ);
|
|
||||||
strncpy(keystr[MOVE_LEFT], keys_action_allkeys(KEY_MOVE_LEFT),
|
|
||||||
BUFSIZ);
|
|
||||||
strncpy(keystr[MOVE_RIGHT], keys_action_allkeys(KEY_MOVE_RIGHT),
|
|
||||||
BUFSIZ);
|
|
||||||
hscr[HELP_DISPLACEMENT].title = _("Displacement keys\n");
|
|
||||||
snprintf(hscr[HELP_DISPLACEMENT].text, HELPTEXTSIZ,
|
|
||||||
_("Move around inside calcurse screens.\n"
|
|
||||||
"The following scheme summarizes how to get around:\n\n"
|
|
||||||
" move up\n"
|
|
||||||
" move to previous week\n"
|
|
||||||
"\n"
|
|
||||||
" %s\n"
|
|
||||||
" move left ^ \n"
|
|
||||||
" move to previous day |\n"
|
|
||||||
" %s\n"
|
|
||||||
" <-- + -->\n"
|
|
||||||
" %s\n"
|
|
||||||
" | move right\n"
|
|
||||||
" v move to next day\n"
|
|
||||||
" %s\n"
|
|
||||||
"\n"
|
|
||||||
" move to next week\n"
|
|
||||||
" move down\n"
|
|
||||||
"\nMoreover, while inside the calendar panel, the '%s' key moves\n"
|
|
||||||
"to the first day of the week, and the '%s' key selects the last day of\n"
|
|
||||||
"the week.\n"),
|
|
||||||
keystr[MOVE_UP], keystr[MOVE_LEFT],
|
|
||||||
keystr[MOVE_RIGHT], keystr[MOVE_DOWN],
|
|
||||||
keys_action_firstkey(KEY_START_OF_WEEK),
|
|
||||||
keys_action_firstkey(KEY_END_OF_WEEK));
|
|
||||||
|
|
||||||
hscr[HELP_VIEW].title = _("View\n");
|
|
||||||
snprintf(hscr[HELP_VIEW].text, HELPTEXTSIZ,
|
|
||||||
_("View the item you select in either the Todo or Appointment panel.\n"
|
|
||||||
"\nThis is usefull when an event description is longer than the "
|
|
||||||
"available\nspace to display it. "
|
|
||||||
"If that is the case, the description will be\n"
|
|
||||||
"shortened and its end replaced by '...'. To be able to read the entire\n"
|
|
||||||
"description, just press '%s' and a popup window will appear, containing\n"
|
|
||||||
"the whole event.\n"
|
|
||||||
"\nPress any key to close the popup window and go back to the main\n"
|
|
||||||
"Calcurse screen."),
|
|
||||||
keys_action_firstkey(KEY_VIEW_ITEM));
|
|
||||||
|
|
||||||
hscr[HELP_PIPE].title = _("Pipe\n");
|
|
||||||
snprintf(hscr[HELP_PIPE].text, HELPTEXTSIZ,
|
|
||||||
_("Pipe the selected item to an external program.\n"
|
|
||||||
"\nPress the '%s' key to pipe the currently selected appointment or\n"
|
|
||||||
"todo entry to an external program.\n"
|
|
||||||
"\nYou will be driven back to calcurse as soon as the program exits.\n"),
|
|
||||||
keys_action_firstkey(KEY_PIPE_ITEM));
|
|
||||||
|
|
||||||
hscr[HELP_TAB].title = _("Tab\n");
|
|
||||||
snprintf(hscr[HELP_TAB].text, HELPTEXTSIZ,
|
|
||||||
_("Switch between panels.\n"
|
|
||||||
"The panel currently in use has its border colorized.\n"
|
|
||||||
"\nSome actions are possible only if the right panel is selected.\n"
|
|
||||||
"For example, if you want to add a task in the TODO list, you need first"
|
|
||||||
"\nto press the '%s' key to get the TODO panel selected. Then you can\n"
|
|
||||||
"press '%s' to add your item.\n"
|
|
||||||
"\nNotice that at the bottom of the screen the list of possible actions\n"
|
|
||||||
"change while pressing '%s', so you always know what action can be\n"
|
|
||||||
"performed on the selected panel."),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_CHANGE_VIEW),
|
|
||||||
keys_action_firstkey(KEY_ADD_ITEM),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_CHANGE_VIEW));
|
|
||||||
|
|
||||||
hscr[HELP_GOTO].title = _("Goto\n");
|
|
||||||
snprintf(hscr[HELP_GOTO].text, HELPTEXTSIZ,
|
|
||||||
_("Jump to a specific day in the calendar.\n"
|
|
||||||
"\nUsing this command, you do not need to travel to that day using\n"
|
|
||||||
"the displacement keys inside the calendar panel.\n"
|
|
||||||
"If you hit [ENTER] without specifying any date, Calcurse checks the\n"
|
|
||||||
"system current date and you will be taken to that date.\n"
|
|
||||||
"\nNotice that pressing '%s', whatever panel is\n"
|
|
||||||
"selected, will select current day in the calendar."),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_GOTO_TODAY));
|
|
||||||
|
|
||||||
hscr[HELP_DELETE].title = _("Delete\n");
|
|
||||||
snprintf(hscr[HELP_DELETE].text, HELPTEXTSIZ,
|
|
||||||
_("Delete an element in the TODO or Appointment list.\n"
|
|
||||||
"\nDepending on which panel is selected when you press the delete key,\n"
|
|
||||||
"the hilighted item of either the TODO or Appointment list will be \n"
|
|
||||||
"removed from this list.\n"
|
|
||||||
"\nIf the item to be deleted is recurrent, you will be asked if you\n"
|
|
||||||
"wish to suppress all of the item occurences or just the one you\n"
|
|
||||||
"selected.\n"
|
|
||||||
"\nIf the general option 'confirm_delete' is set to 'YES', then you will"
|
|
||||||
"\nbe asked for confirmation before deleting the selected event.\n"
|
|
||||||
"Do not forget to save the calendar data to retrieve the modifications\n"
|
|
||||||
"next time you launch Calcurse."));
|
|
||||||
|
|
||||||
hscr[HELP_ADD].title = _("Add\n");
|
|
||||||
snprintf(hscr[HELP_ADD].text, HELPTEXTSIZ,
|
|
||||||
_("Add an item in either the TODO or Appointment list, depending on which\n"
|
|
||||||
"panel is selected when you press '%s'.\n"
|
|
||||||
"\nTo enter a new item in the TODO list, you will need first to enter the"
|
|
||||||
"\ndescription of this new item. Then you will be asked to specify the "
|
|
||||||
"todo\npriority. This priority is represented by a number going from 9 "
|
|
||||||
"for the\nlowest priority, to 1 for the highest one. It is still "
|
|
||||||
"possible to\nchange the item priority afterwards, by using the '%s' and "
|
|
||||||
"'%s' keys\ninside the todo panel.\n"
|
|
||||||
"\nIf the APPOINTMENT panel is selected while pressing '%s', you will be\n"
|
|
||||||
"able to enter either a new appointment or a new all-day long event.\n"
|
|
||||||
"To enter a new event, press [ENTER] instead of the item start time, "
|
|
||||||
"and\njust fill in the event description.\n"
|
|
||||||
"To enter a new appointment to be added in the APPOINTMENT list, you\n"
|
|
||||||
"will need to enter successively the time at which the appointment\n"
|
|
||||||
"begins, the appointment length (either by specifying the end time in\n"
|
|
||||||
"[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n"
|
|
||||||
"and the description of the event.\n"
|
|
||||||
"\nThe day at which occurs the event or appointment is the day currently"
|
|
||||||
"\nselected in the calendar, so you need to move to the desired day "
|
|
||||||
"before\npressing '%s'.\n" "\nNotes:\n"
|
|
||||||
" o if an appointment lasts for such a long time that it continues\n"
|
|
||||||
" on the next days, this event will be indicated on all the\n"
|
|
||||||
" corresponding days, and the beginning or ending hour will be\n"
|
|
||||||
" replaced by '..' if the event does not begin or end on the day.\n"
|
|
||||||
" o if you only press [ENTER] at the APPOINTMENT or TODO event\n"
|
|
||||||
" description prompt, without any description, no item will be\n"
|
|
||||||
" added.\n"
|
|
||||||
" o do not forget to save the calendar data to retrieve the new\n"
|
|
||||||
" event next time you launch Calcurse."),
|
|
||||||
keys_action_firstkey(KEY_ADD_ITEM),
|
|
||||||
keys_action_firstkey(KEY_RAISE_PRIORITY),
|
|
||||||
keys_action_firstkey(KEY_LOWER_PRIORITY),
|
|
||||||
keys_action_firstkey(KEY_ADD_ITEM),
|
|
||||||
keys_action_firstkey(KEY_ADD_ITEM));
|
|
||||||
|
|
||||||
hscr[HELP_COPY_PASTE].title = _("Copy and Paste\n");
|
|
||||||
snprintf(hscr[HELP_COPY_PASTE].text, HELPTEXTSIZ,
|
|
||||||
_("Copy and paste the currently selected item. This is useful to quickly\n"
|
|
||||||
"copy an item from one date to another. To do so, one must first\n"
|
|
||||||
"highlight the item that needs to be copied, then press '%s' to copy.\n"
|
|
||||||
"Once the new date is chosen in the calendar, the appointment panel must\n"
|
|
||||||
"be selected and the '%s' key must be pressed to paste the item. The item\n"
|
|
||||||
"will appear in the appointment panel, assigned to the newly selected\n"
|
|
||||||
"date.\n\n"),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_COPY),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_PASTE));
|
|
||||||
|
|
||||||
hscr[HELP_EDIT].title = _("Edit Item\n");
|
|
||||||
snprintf(hscr[HELP_EDIT].text, HELPTEXTSIZ,
|
|
||||||
_("Edit the item which is currently selected.\n"
|
|
||||||
"Depending on the item type (appointment, event, or todo), and if it is\n"
|
|
||||||
"repeated or not, you will be asked to choose one of the item properties"
|
|
||||||
"\nto modify. An item property is one of the following: the start time, "
|
|
||||||
"the\nend time, the description, or the item repetition.\n"
|
|
||||||
"Once you have chosen the property you want to modify, you will be shown"
|
|
||||||
"\nits actual value, and you will be able to change it as you like.\n"
|
|
||||||
"\nNotes:\n"
|
|
||||||
" o if you choose to edit the item repetition properties, you will\n"
|
|
||||||
" be asked to re-enter all of the repetition characteristics\n"
|
|
||||||
" (repetition type, frequence, and ending date). Moreover, the\n"
|
|
||||||
" previous data concerning the deleted occurences will be lost.\n"
|
|
||||||
" o do not forget to save the calendar data to retrieve the\n"
|
|
||||||
" modified properties next time you launch Calcurse."));
|
|
||||||
|
|
||||||
hscr[HELP_ENOTE].title = _("EditNote\n");
|
|
||||||
snprintf(hscr[HELP_ENOTE].text, HELPTEXTSIZ,
|
|
||||||
_("Attach a note to any type of item, or edit an already existing note.\n"
|
|
||||||
"This feature is useful if you do not have enough space to store all\n"
|
|
||||||
"of your item description, or if you would like to add sub-tasks to an\n"
|
|
||||||
"already existing todo item for example.\n"
|
|
||||||
"Before pressing the '%s' key, you first need to highlight the item you\n"
|
|
||||||
"want the note to be attached to. Then you will be driven to an\n"
|
|
||||||
"external editor to edit your note. This editor is chosen the following\n"
|
|
||||||
"way:\n"
|
|
||||||
" o if the 'VISUAL' environment variable is set, then this will be\n"
|
|
||||||
" the default editor to be called.\n"
|
|
||||||
" o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n"
|
|
||||||
" will be used as the default editor.\n"
|
|
||||||
" o if none of the above environment variables is set, then\n"
|
|
||||||
" '/usr/bin/vi' will be used.\n"
|
|
||||||
"\nOnce the item note is edited and saved, quit your favorite editor.\n"
|
|
||||||
"You will then go back to Calcurse, and the '>' sign will appear in front"
|
|
||||||
"\nof the highlighted item, meaning there is a note attached to it."),
|
|
||||||
keys_action_firstkey(KEY_EDIT_NOTE));
|
|
||||||
|
|
||||||
hscr[HELP_VNOTE].title = _("ViewNote\n");
|
|
||||||
snprintf(hscr[HELP_VNOTE].text, HELPTEXTSIZ,
|
|
||||||
_("View a note which was previously attached to an item (an item which\n"
|
|
||||||
"owns a note has a '>' sign in front of it).\n"
|
|
||||||
"This command only permits to view the note, not to edit it (to do so,\n"
|
|
||||||
"use the 'EditNote' command, by pressing the '%s' key).\n"
|
|
||||||
"Once you highlighted an item with a note attached to it, and the '%s' key"
|
|
||||||
"\nwas pressed, you will be driven to an external pager to view that "
|
|
||||||
"note.\n"
|
|
||||||
"The default pager is chosen the following way:\n"
|
|
||||||
" o if the 'PAGER' environment variable is set, then this will be\n"
|
|
||||||
" the default viewer to be called.\n"
|
|
||||||
" o if the above environment variable is not set, then\n"
|
|
||||||
" '/usr/bin/less' will be used.\n"
|
|
||||||
"As for editing a note, quit the pager and you will be driven back to\n"
|
|
||||||
"Calcurse."), keys_action_firstkey(KEY_EDIT_NOTE),
|
|
||||||
keys_action_firstkey(KEY_VIEW_NOTE));
|
|
||||||
|
|
||||||
hscr[HELP_PRIORITY].title = _("Priority\n");
|
|
||||||
snprintf(hscr[HELP_PRIORITY].text, HELPTEXTSIZ,
|
|
||||||
_("Change the priority of the currently selected item in the TODO list.\n"
|
|
||||||
"Priorities are represented by the number appearing in front of the\n"
|
|
||||||
"todo description. This number goes from 9 for the lowest priority to\n"
|
|
||||||
"1 for the highest priority.\n"
|
|
||||||
"Todo having higher priorities are placed first (at the top) inside the\n"
|
|
||||||
"todo panel.\n\n"
|
|
||||||
"If you want to raise the priority of a todo item, you need to press "
|
|
||||||
"'%s'.\n"
|
|
||||||
"In doing so, the number in front of this item will decrease, "
|
|
||||||
"meaning its\npriority increases. The item position inside the todo "
|
|
||||||
"panel may change,\ndepending on the priority of the items above it.\n\n"
|
|
||||||
"At the opposite, to lower a todo priority, press '%s'. The todo position"
|
|
||||||
"\nmay also change depending on the priority of the items below."),
|
|
||||||
keys_action_firstkey(KEY_RAISE_PRIORITY),
|
|
||||||
keys_action_firstkey(KEY_LOWER_PRIORITY));
|
|
||||||
|
|
||||||
hscr[HELP_REPEAT].title = _("Repeat\n");
|
|
||||||
snprintf(hscr[HELP_REPEAT].text, HELPTEXTSIZ,
|
|
||||||
_("Repeat an event or an appointment.\n"
|
|
||||||
"You must first select the item to be repeated by moving inside the\n"
|
|
||||||
"appointment panel. Then pressing '%s' will lead you to a set of three\n"
|
|
||||||
"questions, with which you will be able to specify the repetition\n"
|
|
||||||
"characteristics:\n\n"
|
|
||||||
" o type: you can choose between a daily, weekly, monthly or\n"
|
|
||||||
" yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n"
|
|
||||||
" respectively.\n\n"
|
|
||||||
" o frequence: this indicates how often the item shall be repeated.\n"
|
|
||||||
" For example, if you want to remember an anniversary,\n"
|
|
||||||
" choose a 'yearly' repetition with a frequence of '1',\n"
|
|
||||||
" which means it must be repeated every year. Another\n"
|
|
||||||
" example: if you go to the restaurant every two days,\n"
|
|
||||||
" choose a 'daily' repetition with a frequence of '2'.\n\n"
|
|
||||||
" o ending date: this specifies when to stop repeating the selected\n"
|
|
||||||
" event or appointment. To indicate an endless \n"
|
|
||||||
" repetition, enter '0' and the item will be repeated\n"
|
|
||||||
" forever.\n" "\nNotes:\n"
|
|
||||||
" o repeated items are marked with an '*' inside the appointment\n"
|
|
||||||
" panel, to be easily recognizable from non-repeated ones.\n"
|
|
||||||
" o the 'Repeat' and 'Delete' command can be mixed to create\n"
|
|
||||||
" complicated configurations, as it is possible to delete only\n"
|
|
||||||
" one occurence of a repeated item."),
|
|
||||||
keys_action_firstkey(KEY_REPEAT_ITEM));
|
|
||||||
|
|
||||||
hscr[HELP_FLAG].title = _("Flag Item\n");
|
|
||||||
snprintf(hscr[HELP_FLAG].text, HELPTEXTSIZ,
|
|
||||||
_("Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n"
|
|
||||||
"If a todo is flagged as completed, its priority number will be replaced\n"
|
|
||||||
"by an 'X' sign. Completed tasks will no longer appear in exported data\n"
|
|
||||||
"or when using the '-t' command line flag (unless specifying '0' as the\n"
|
|
||||||
"priority number, in which case only completed tasks will be shown).\n\n"
|
|
||||||
"If an appointment is flagged as important, an exclamation mark appears\n"
|
|
||||||
"in front of it, and you will be warned if time gets closed to the\n"
|
|
||||||
"appointment start time.\n"
|
|
||||||
"To customize the way one gets notified, the configuration submenu lets\n"
|
|
||||||
"you choose the command launched to warn user of an upcoming appointment,"
|
|
||||||
"\nand how long before it he gets notified."));
|
|
||||||
|
|
||||||
hscr[HELP_CONFIG].title = _("Config\n");
|
|
||||||
snprintf(hscr[HELP_CONFIG].text, HELPTEXTSIZ,
|
|
||||||
_("Open the configuration submenu.\n"
|
|
||||||
"From this submenu, you can select between color, layout, notification\n"
|
|
||||||
"and general options, and you can also configure your keybindings.\n"
|
|
||||||
"\nThe color submenu lets you choose the color theme.\n"
|
|
||||||
"The layout submenu lets you choose the Calcurse screen layout, in other"
|
|
||||||
"\nwords where to place the three different panels on the screen.\n"
|
|
||||||
"The general options submenu brings a screen with the different options"
|
|
||||||
"\nwhich modifies the way Calcurse interacts with the user.\n"
|
|
||||||
"The notify submenu allows you to change the notify-bar settings.\n"
|
|
||||||
"The keys submenu lets you define your own key bindings.\n"
|
|
||||||
"\nDo not forget to save the calendar data to retrieve your configuration"
|
|
||||||
"\nnext time you launch Calcurse."));
|
|
||||||
|
|
||||||
hscr[HELP_GENERAL].title = _("Generic keybindings\n");
|
|
||||||
snprintf(hscr[HELP_GENERAL].text, HELPTEXTSIZ,
|
|
||||||
_("Some of the keybindings apply whatever panel is selected. They are\n"
|
|
||||||
"called generic keybinding.\n"
|
|
||||||
"Here is the list of all the generic key bindings, together with their\n"
|
|
||||||
"corresponding action:\n\n"
|
|
||||||
" '%s' : Redraw function -> redraws calcurse panels, this is useful if\n"
|
|
||||||
" you resize your terminal screen or when\n"
|
|
||||||
" garbage appears inside the display\n"
|
|
||||||
" '%s' : Add Appointment -> add an appointment or an event\n"
|
|
||||||
" '%s' : Add TODO -> add a todo\n"
|
|
||||||
" '%s' : -1 Day -> move to previous day\n"
|
|
||||||
" '%s' : +1 Day -> move to next day\n"
|
|
||||||
" '%s' : -1 Week -> move to previous week\n"
|
|
||||||
" '%s' : +1 Week -> move to next week\n"
|
|
||||||
" '%s' : -1 Month -> move to previous month\n"
|
|
||||||
" '%s' : +1 Month -> move to next month\n"
|
|
||||||
" '%s' : -1 Year -> move to previous year\n"
|
|
||||||
" '%s' : +1 Year -> move to next year\n"
|
|
||||||
" '%s' : Goto today -> move to current day\n"
|
|
||||||
"\nThe '%s' and '%s' keys are used to scroll text upward or downward\n"
|
|
||||||
"when inside specific screens such the help screens for example.\n"
|
|
||||||
"They are also used when the calendar screen is selected to switch\n"
|
|
||||||
"between the available views (monthly and weekly calendar views)."),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_REDRAW),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_ADD_APPT),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_ADD_TODO),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_PREV_DAY),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_NEXT_DAY),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_PREV_WEEK),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_NEXT_WEEK),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_PREV_MONTH),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_NEXT_MONTH),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_PREV_YEAR),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_NEXT_YEAR),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_GOTO_TODAY),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_SCROLL_UP),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_SCROLL_DOWN));
|
|
||||||
|
|
||||||
hscr[HELP_OTHER].title = _("OtherCmd\n");
|
|
||||||
snprintf(hscr[HELP_OTHER].text, HELPTEXTSIZ,
|
|
||||||
_("Switch between status bar help pages.\n"
|
|
||||||
"Because the terminal screen is too narrow to display all of the\n"
|
|
||||||
"available commands, you need to press '%s' to see the next set of\n"
|
|
||||||
"commands together with their keybindings.\n"
|
|
||||||
"Once the last status bar page is reached, pressing '%s' another time\n"
|
|
||||||
"leads you back to the first page."),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_OTHER_CMD),
|
|
||||||
keys_action_firstkey(KEY_GENERIC_OTHER_CMD));
|
|
||||||
|
|
||||||
hscr[HELP_CREDITS].title = _("Calcurse - text-based organizer");
|
|
||||||
snprintf(hscr[HELP_CREDITS].text, HELPTEXTSIZ,
|
|
||||||
_("\nCopyright (c) 2004-2013 calcurse Development Team\n"
|
|
||||||
"All rights reserved.\n"
|
|
||||||
"\n"
|
|
||||||
"Redistribution and use in source and binary forms, with or without\n"
|
|
||||||
"modification, are permitted provided that the following conditions\n"
|
|
||||||
"are met:\n"
|
|
||||||
"\n"
|
|
||||||
"\t- Redistributions of source code must retain the above\n"
|
|
||||||
"\t copyright notice, this list of conditions and the\n"
|
|
||||||
"\t following disclaimer.\n"
|
|
||||||
"\n"
|
|
||||||
"\t- Redistributions in binary form must reproduce the above\n"
|
|
||||||
"\t copyright notice, this list of conditions and the\n"
|
|
||||||
"\t following disclaimer in the documentation and/or other\n"
|
|
||||||
"\t materials provided with the distribution.\n"
|
|
||||||
"\n\n"
|
|
||||||
"Send your feedback or comments to : misc@calcurse.org\n"
|
|
||||||
"Calcurse home page : http://calcurse.org"));
|
|
||||||
|
|
||||||
help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2,
|
|
||||||
col);
|
|
||||||
oldpage = HELP_MAIN;
|
|
||||||
need_resize = 0;
|
|
||||||
|
|
||||||
/* Display the help screen related to user input. */
|
|
||||||
while (ch != KEY_GENERIC_QUIT) {
|
|
||||||
erase_window_part(hwin.win.p, 1, hwin.pad.y, col - 2,
|
|
||||||
hwin.win.h - 2);
|
|
||||||
|
|
||||||
switch (ch) {
|
|
||||||
case KEY_GENERIC_SCROLL_DOWN:
|
|
||||||
wins_scrollwin_down(&hwin, 1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_GENERIC_SCROLL_UP:
|
|
||||||
wins_scrollwin_up(&hwin, 1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
page = wanted_page(ch);
|
|
||||||
if (page != NOPAGE) {
|
|
||||||
hwin.first_visible_line = 0;
|
|
||||||
hwin.total_lines =
|
|
||||||
help_write_pad(&hwin.pad,
|
|
||||||
hscr[page].title,
|
|
||||||
hscr[page].text, ch);
|
|
||||||
oldpage = page;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (resize) {
|
|
||||||
resize = 0;
|
|
||||||
wins_get_config();
|
|
||||||
help_wins_reset(&hwin);
|
|
||||||
hwin.first_visible_line = 0;
|
|
||||||
hwin.total_lines =
|
|
||||||
help_write_pad(&hwin.pad, hscr[oldpage].title,
|
|
||||||
hscr[oldpage].text, ch);
|
|
||||||
need_resize = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
wins_scrollwin_display(&hwin);
|
|
||||||
ch = keys_getch(win[KEY].p, NULL, NULL);
|
|
||||||
}
|
|
||||||
wins_scrollwin_delete(&hwin);
|
|
||||||
if (need_resize)
|
|
||||||
wins_reset();
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user