diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/calcurse.c | 3 | ||||
-rw-r--r-- | src/calcurse.h | 4 | ||||
-rw-r--r-- | src/custom.c | 39 | ||||
-rw-r--r-- | src/help.c | 804 |
5 files changed, 1 insertions, 850 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 3559a25..85a8780 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,7 +19,6 @@ calcurse_SOURCES = \ day.c \ event.c \ getstring.c \ - help.c \ ical.c \ io.c \ keys.c \ diff --git a/src/calcurse.c b/src/calcurse.c index 859bc1e..c3a7ce8 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -278,8 +278,7 @@ static inline void key_view_note(void) static inline void key_generic_help(void) { - wins_status_bar(); - help_screen(); + wins_launch_external(DOCDIR "/intro.txt", conf.pager); wins_update(FLAG_ALL); } diff --git a/src/calcurse.h b/src/calcurse.h index e0fe84f..c595cdb 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -719,10 +719,6 @@ struct event *event_scan(FILE *, struct tm, int, char *); void event_delete(struct event *); 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 */ enum getstr getstring(WINDOW *, char *, int, int, int); int updatestring(WINDOW *, char **, int, int); diff --git a/src/custom.c b/src/custom.c index da632bf..7bcbffc 100644 --- a/src/custom.c +++ b/src/custom.c @@ -208,18 +208,9 @@ static void display_layout_config(struct window *lwin, int mark, /* Choose the layout */ void custom_layout_config(void) { - struct scrollwin hwin; struct window conf_win; int ch, mark, cursor, need_reset; 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; 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) { need_reset = 0; 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: mark = cursor; break; @@ -290,7 +269,6 @@ void custom_layout_config(void) /* Sidebar configuration screen. */ void custom_sidebar_config(void) { - struct scrollwin hwin; struct binding quit = { _("Exit"), KEY_GENERIC_QUIT }; struct binding inc = { _("Width +"), KEY_MOVE_UP }; struct binding dec = { _("Width -"), KEY_MOVE_DOWN }; @@ -298,13 +276,6 @@ void custom_sidebar_config(void) struct binding *bindings[] = { &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; bindings_size = ARRAY_SIZE(bindings); @@ -322,16 +293,6 @@ void custom_sidebar_config(void) case KEY_MOVE_DOWN: wins_sbar_wdec(); 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: break; default: diff --git a/src/help.c b/src/help.c deleted file mode 100644 index b1c50b3..0000000 --- a/src/help.c +++ /dev/null @@ -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(); -} |