summaryrefslogtreecommitdiffstats
path: root/src/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/help.c')
-rwxr-xr-xsrc/help.c1060
1 files changed, 535 insertions, 525 deletions
diff --git a/src/help.c b/src/help.c
index 5bd7f83..f023d48 100755
--- a/src/help.c
+++ b/src/help.c
@@ -1,8 +1,8 @@
-/* $calcurse: help.c,v 1.21 2008/02/11 21:26:00 culot Exp $ */
+/* $calcurse: help.c,v 1.22 2008/04/12 21:14:03 culot Exp $ */
/*
* Calcurse - text-based organizer
- * Copyright (c) 2004-2007 Frederic Culot
+ * Copyright (c) 2004-2008 Frederic Culot
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -35,61 +35,65 @@
#include "utils.h"
#include "notify.h"
-typedef enum {
- HELP_MAIN,
- HELP_SAVE,
- HELP_EXPORT,
- HELP_DISPLACEMENT,
- HELP_VIEW,
- HELP_TAB,
- HELP_GOTO,
- HELP_DELETE,
- HELP_ADD,
- 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;
+typedef enum
+{
+ HELP_MAIN,
+ HELP_SAVE,
+ HELP_EXPORT,
+ HELP_DISPLACEMENT,
+ HELP_VIEW,
+ HELP_TAB,
+ HELP_GOTO,
+ HELP_DELETE,
+ HELP_ADD,
+ 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)
+static int
+get_help_lines (char *text)
{
- int i;
- int nl = 0;
-
- for (i = 0; text[i]; i++) {
- if (text[i] == '\n') nl++;
- }
- return nl + 1;
+ int i;
+ int nl = 0;
+
+ for (i = 0; text[i]; i++)
+ {
+ if (text[i] == '\n')
+ nl++;
+ }
+ return (nl + 1);
}
/*
* 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)
+static int
+write_help_pad (window_t *win, help_page_t *hpage)
{
- int nl_title = 0;
- int nl_text = 0;
-
- nl_text = get_help_lines(hpage->text);
- nl_title = get_help_lines(hpage->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);
- custom_remove_attr(win->p, ATTR_HIGHEST);
- mvwprintw(win->p, nl_title, 0, "%s", hpage->text);
- return (nl_text + nl_title);
+ int nl_title = 0;
+ int nl_text = 0;
+
+ nl_text = get_help_lines (hpage->text);
+ nl_title = get_help_lines (hpage->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);
+ custom_remove_attr (win->p, ATTR_HIGHEST);
+ mvwprintw (win->p, nl_title, 0, "%s", hpage->text);
+ return (nl_text + nl_title);
}
/*
@@ -97,524 +101,530 @@ write_help_pad(window_t *win, help_page_t *hpage)
* faster.
*/
static void
-help_wins_init(window_t *hwin, window_t *hpad, const int PADOFFSET)
+help_wins_init (window_t *hwin, window_t *hpad, const int PADOFFSET)
{
- char label[BUFSIZ];
-
- hwin->h = (notify_bar()) ? row - 3 : row - 2;
- hwin->p = newwin(hwin->h, col, 0, 0);
- hpad->w = col - 2 * PADOFFSET + 1;
- hpad->p = newpad(BUFSIZ, hpad->w);
- box(hwin->p, 0, 0);
- snprintf(label, BUFSIZ, _("CalCurse %s | help"), VERSION);
- wins_show(hwin->p, label);
+ char label[BUFSIZ];
+
+ hwin->h = (notify_bar ())? row - 3 : row - 2;
+ hwin->p = newwin (hwin->h, col, 0, 0);
+ hpad->w = col - 2 * PADOFFSET + 1;
+ hpad->p = newpad (BUFSIZ, hpad->w);
+ box (hwin->p, 0, 0);
+ snprintf (label, BUFSIZ, _("CalCurse %s | help"), VERSION);
+ wins_show (hwin->p, label);
}
/*
* Delete the existing windows and recreate them with their new
* size and placement.
*/
-static void
-help_wins_reinit(window_t *hwin, window_t *hpad, const int PADOFFSET)
+static void
+help_wins_reinit (window_t *hwin, window_t *hpad, const int PADOFFSET)
{
- delwin(hpad->p);
- delwin(hwin->p);
- wins_get_config();
- help_wins_init(hwin, hpad, PADOFFSET);
+ delwin (hpad->p);
+ delwin (hwin->p);
+ wins_get_config ();
+ help_wins_init (hwin, hpad, PADOFFSET);
}
/* Reset the screen, needed when resizing terminal for example. */
static void
-help_wins_reset(window_t *hwin, window_t *hpad, const int PADOFFSET)
+help_wins_reset (window_t *hwin, window_t *hpad, const int PADOFFSET)
{
- endwin();
- refresh();
- curs_set(0);
- delwin(win[STA].p);
- help_wins_reinit(hwin, hpad, PADOFFSET);
- 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(win[NOT].h, win[NOT].w, win[NOT].y,
- win[NOT].x);
- status_bar();
- if (notify_bar())
- notify_update_bar();
+ endwin ();
+ refresh ();
+ curs_set (0);
+ delwin (win[STA].p);
+ help_wins_reinit (hwin, hpad, PADOFFSET);
+ 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 (win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x);
+ status_bar ();
+ if (notify_bar ())
+ notify_update_bar ();
}
/* Association between a key pressed and its corresponding help page. */
static int
-wanted_page(int ch)
+wanted_page (int ch)
{
- int page;
-
- switch (ch) {
-
- case '?':
- page = HELP_MAIN;
- break;
-
- case '!':
- page = HELP_FLAG;
- break;
-
- case CTRL('r'):
- case CTRL('a'):
- case CTRL('t'):
- case CTRL('h'):
- case CTRL('j'):
- case CTRL('k'):
- case CTRL('l'):
- page = HELP_GENERAL;
- break;
-
- case 's':
- page = HELP_SAVE;
- break;
-
- case 'x':
- page = HELP_EXPORT;
- break;
-
- case 'h':
- case 'l':
- case 'j':
- case 'k':
- case 259:
- case 258:
- case 260:
- case 261:
- page = HELP_DISPLACEMENT;
- break;
-
- case 'a':
- page = HELP_ADD;
- break;
-
- case 'g':
- page = HELP_GOTO;
- break;
-
- case 'd':
- page = HELP_DELETE;
- break;
-
- case 'e':
- page = HELP_EDIT;
- break;
-
- case 'n':
- page = HELP_ENOTE;
- break;
-
- case '>':
- page = HELP_VNOTE;
- break;
-
- case 'c':
- page = HELP_CONFIG;
- break;
-
- case 'o':
- page = HELP_OTHER;
- break;
-
- case 'r':
- page = HELP_REPEAT;
- break;
-
- case 'v':
- page = HELP_VIEW;
- break;
-
- case '+':
- case '-':
- page = HELP_PRIORITY;
- break;
-
- case 9:
- page = HELP_TAB;
- break;
-
- case '@':
- page = HELP_CREDITS;
- break;
-
- default:
- page = NOPAGE;
- break;
- }
-
- return (page);
+ int page;
+
+ switch (ch)
+ {
+
+ case '?':
+ page = HELP_MAIN;
+ break;
+
+ case '!':
+ page = HELP_FLAG;
+ break;
+
+ case CTRL ('r'):
+ case CTRL ('a'):
+ case CTRL ('t'):
+ case CTRL ('h'):
+ case CTRL ('j'):
+ case CTRL ('k'):
+ case CTRL ('l'):
+ page = HELP_GENERAL;
+ break;
+
+ case 's':
+ page = HELP_SAVE;
+ break;
+
+ case 'x':
+ page = HELP_EXPORT;
+ break;
+
+ case 'h':
+ case 'l':
+ case 'j':
+ case 'k':
+ case 259:
+ case 258:
+ case 260:
+ case 261:
+ page = HELP_DISPLACEMENT;
+ break;
+
+ case 'a':
+ page = HELP_ADD;
+ break;
+
+ case 'g':
+ page = HELP_GOTO;
+ break;
+
+ case 'd':
+ page = HELP_DELETE;
+ break;
+
+ case 'e':
+ page = HELP_EDIT;
+ break;
+
+ case 'n':
+ page = HELP_ENOTE;
+ break;
+
+ case '>':
+ page = HELP_VNOTE;
+ break;
+
+ case 'c':
+ page = HELP_CONFIG;
+ break;
+
+ case 'o':
+ page = HELP_OTHER;
+ break;
+
+ case 'r':
+ page = HELP_REPEAT;
+ break;
+
+ case 'v':
+ page = HELP_VIEW;
+ break;
+
+ case '+':
+ case '-':
+ page = HELP_PRIORITY;
+ break;
+
+ case 9:
+ page = HELP_TAB;
+ break;
+
+ case '@':
+ page = HELP_CREDITS;
+ break;
+
+ default:
+ page = NOPAGE;
+ break;
+ }
+
+ return (page);
}
/* Draws the help screen */
-void
-help_screen(void)
+void
+help_screen (void)
{
- window_t hwin;
- window_t hpad;
- const int PADOFFSET = 4;
- const int TITLELINES = 3;
- int ch = '?';
- int text_lines;
- int first_line = 0, nl = 0;
- int page, oldpage;
- int need_resize;
- help_page_t hscr[HELPSCREENS];
-
- hscr[HELP_MAIN].title =
- _(" Welcome to Calcurse. This is the main help screen.\n");
- hscr[HELP_MAIN].text =
+ window_t hwin;
+ window_t hpad;
+ const int PADOFFSET = 4;
+ const int TITLELINES = 3;
+ int ch = '?';
+ int text_lines;
+ int first_line = 0, nl = 0;
+ int page, oldpage;
+ int need_resize;
+ help_page_t hscr[HELPSCREENS];
+
+ hscr[HELP_MAIN].title =
+ _(" Welcome to Calcurse. This is the main help screen.\n");
+ hscr[HELP_MAIN].text =
_(" Moving around: Press CTRL-P or CTRL-N to scroll text upward or\n"
- " downward inside help screens, if necessary.\n\n"
- " Exit help: When finished, press 'Q' to exit help and go back\n"
- " to the main Calcurse screen.\n\n"
- " Help topic: At the bottom of this screen you can see a panel\n"
- " with different fields, represented by a letter and\n"
- " a short title. This panel contains all the available\n"
- " actions 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.\n\n"
- " Credits: Press '@' for credits.");
-
- hscr[HELP_SAVE].title = _("Save:\n");
- hscr[HELP_SAVE].text =
+ " downward inside help screens, if necessary.\n\n"
+ " Exit help: When finished, press 'Q' to exit help and go back\n"
+ " to the main Calcurse screen.\n\n"
+ " Help topic: At the bottom of this screen you can see a panel\n"
+ " with different fields, represented by a letter and\n"
+ " a short title. This panel contains all the available\n"
+ " actions 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.\n\n"
+ " Credits: Press '@' for credits.");
+
+ hscr[HELP_SAVE].title = _("Save:\n");
+ hscr[HELP_SAVE].text =
_("Pressing 'S' saves the Calcurse data.\n\n"
- "The data is splitted into three different files which contain :"
- "\n\n"
- " / ~/.calcurse/conf -> the user configuration\n"
- " | (layout, color, general options)\n"
- " | ~/.calcurse/apts -> the data related to the appointments\n"
- " \\ ~/.calcurse/todo -> the data related to the todo list\n"
- "\nIn the config menu, you can choose to save the Calcurse data\n"
- "automatically before quitting.");
-
- hscr[HELP_EXPORT].title = _("Export:\n");
- hscr[HELP_EXPORT].text =
+ "The data is splitted into three different files which contain :"
+ "\n\n"
+ " / ~/.calcurse/conf -> the user configuration\n"
+ " | (layout, color, general options)\n"
+ " | ~/.calcurse/apts -> the data related to the appointments\n"
+ " \\ ~/.calcurse/todo -> the data related to the todo list\n"
+ "\nIn the config menu, you can choose to save the Calcurse data\n"
+ "automatically before quitting.");
+
+ hscr[HELP_EXPORT].title = _("Export:\n");
+ hscr[HELP_EXPORT].text =
_("Pressing 'X' exports the Calcurse data to iCalendar 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"
- "All of the calcurse data are exported, in the following order:\n"
- "events, appointments, todos.\n");
-
- hscr[HELP_DISPLACEMENT].title = _("Displacement keys:\n");
- hscr[HELP_DISPLACEMENT].text =
+ "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"
+ "All of the calcurse data are exported, in the following order:\n"
+ "events, appointments, todos.\n");
+
+ hscr[HELP_DISPLACEMENT].title = _("Displacement keys:\n");
+ hscr[HELP_DISPLACEMENT].text =
_("You can use either 'H','J','K','L' or the arrow keys '<','v','^','>'\n"
- "to move into the calendar.\n\n"
- "The following scheme explains how :\n\n"
- " move to previous week\n"
- " K ^ \n"
- " move to previous day H < > L move to next day\n"
- " J v \n"
- " move to next week\n"
- "\nWhen the Appointment or ToDo panel is selected, the up and down keys\n"
- "(respectively K or up arrow, and J or down arrow) allows you to select\n"
- "an item from those lists.");
-
- hscr[HELP_VIEW].title = _("View:\n");
- hscr[HELP_VIEW].text =
+ "to move into the calendar.\n\n"
+ "The following scheme explains how :\n\n"
+ " move to previous week\n"
+ " K ^ \n"
+ " move to previous day H < > L move to next day\n"
+ " J v \n"
+ " move to next week\n"
+ "\nWhen the Appointment or ToDo panel is selected, the up and down keys\n"
+ "(respectively K or up arrow, and J or down arrow) allows you to select\n"
+ "an item from those lists.");
+
+ hscr[HELP_VIEW].title = _("View:\n");
+ hscr[HELP_VIEW].text =
_("Pressing 'V' allows you to view the item you select in either the ToDo\n"
- "or Appointment panel.\n"
- "\nThis is usefull when an event description is longer than the available\n"
- "space 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 'V' 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.");
-
- hscr[HELP_TAB].title = _("Tab:\n");
- hscr[HELP_TAB].text =
+ "or Appointment panel.\n"
+ "\nThis is usefull when an event description is longer than the "
+ "available\n space 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 'V' 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.");
+
+ hscr[HELP_TAB].title = _("Tab:\n");
+ hscr[HELP_TAB].text =
_("Pressing 'Tab' allows you to 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\n"
- "to press the 'Tab' key to get the TODO panel selected. Then you can\n"
- "press 'A' to add your item.\n"
- "\nNotice that at the bottom of the screen the list of possible actions\n"
- "change while pressing 'Tab', so you always know what action can be\n"
- "performed on the selected panel.");
-
- hscr[HELP_GOTO].title = _("Goto:\n");
- hscr[HELP_GOTO].text =
+ "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 'Tab' key to get the TODO panel selected. Then you can\n"
+ "press 'A' to add your item.\n"
+ "\nNotice that at the bottom of the screen the list of possible actions\n"
+ "change while pressing 'Tab', so you always know what action can be\n"
+ "performed on the selected panel.");
+
+ hscr[HELP_GOTO].title = _("Goto:\n");
+ hscr[HELP_GOTO].text =
_("Pressing 'G' allows you to 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.");
+ "\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.");
- hscr[HELP_DELETE].title = _("Delete:\n");
- hscr[HELP_DELETE].text =
+ hscr[HELP_DELETE].title = _("Delete:\n");
+ hscr[HELP_DELETE].text =
_("Pressing 'D' deletes 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\n"
- "be 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");
- hscr[HELP_ADD].text =
- _("Pressing 'A' allows you to add an item in either the ToDo or Appointment\n"
- "list, depending on which panel is selected when you press 'A'.\n"
- "\nTo enter a new item in the TODO list, you will need first to enter the\n"
- "description of this new item. Then you will be asked to specify the todo\n"
- "priority. This priority is represented by a number going from 9 for the\n"
- "lowest priority, to 1 for the highest one. It is still possible to\n"
- "change the item priority afterwards, by using the '+/-' keys inside the\n"
- "todo panel.\n"
- "\nIf the APPOINTMENT panel is selected while pressing 'A', 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\n"
- "just 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 duration in\n"
- "minutes, or the end time in [hh:mm] or [h:mm] format), and the\n"
- "description of the event.\n"
- "\nThe day at which occurs the event or appointment is the day currently\n"
- "selected in the calendar, so you need to move to the desired day before\n"
- "pressing 'A'.\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.");
-
- hscr[HELP_EDIT].title = _("Edit Item:\n");
- hscr[HELP_EDIT].text =
+ "\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");
+ hscr[HELP_ADD].text =
+ _("Pressing 'A' allows you to add an item in either the ToDo or Appointment"
+ "\nlist, depending on which panel is selected when you press 'A'.\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 '+/-' "
+ "keys inside the\ntodo panel.\n"
+ "\nIf the APPOINTMENT panel is selected while pressing 'A', 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 duration in\n"
+ "minutes, or the end time in [hh:mm] or [h:mm] format), and the\n"
+ "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 'A'.\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.");
+
+ hscr[HELP_EDIT].title = _("Edit Item:\n");
+ hscr[HELP_EDIT].text =
_("Pressing 'E' allows you to 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\n"
- "to modify. An item property is one of the following: the start time, the\n"
- "end time, the description, or the item repetition.\n"
- "Once you have chosen the property you want to modify, you will be shown\n"
- "its 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");
- hscr[HELP_ENOTE].text =
+ "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");
+ hscr[HELP_ENOTE].text =
_("Pressing 'N' allows you to attach a note to any type of item, or to\n"
- "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 'N' 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\n"
- "of the highlighted item, meaning there is a note attached to it.");
-
- hscr[HELP_VNOTE].title = _("ViewNote:\n");
- hscr[HELP_VNOTE].text =
+ "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 'N' 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.");
+
+ hscr[HELP_VNOTE].title = _("ViewNote:\n");
+ hscr[HELP_VNOTE].text =
_("Pressing the '>' key allows you to view a note which was previously\n"
- "attached to an item (an item which owns a note has a '>' sign in front\n"
- "of it). This command only permits to view the note, not to\n"
- "edit it (to do so, use the 'EditNote' command, using the 'N' key).\n"
- "Once you highlighted an item with a note attached to it, and the 'N' key\n"
- "was 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 the 'N' key, quit the pager and you will be driven back to\n"
- "Calcurse.");
-
- hscr[HELP_PRIORITY].title = _("Priority:\n");
- hscr[HELP_PRIORITY].text =
+ "attached to an item (an item which owns a note has a '>' sign in front\n"
+ "of it). This command only permits to view the note, not to\n"
+ "edit it (to do so, use the 'EditNote' command, using the 'N' key).\n"
+ "Once you highlighted an item with a note attached to it, and the 'N' 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 the 'N' key, quit the pager and you will be driven back to\n"
+ "Calcurse.");
+
+ hscr[HELP_PRIORITY].title = _("Priority:\n");
+ hscr[HELP_PRIORITY].text =
_("Pressing '+' or '-' allows you to change the priority of the currently\n"
- "selected item in the ToDo list. Priorities are represented by the number\n"
- "appearing in front of the todo description. This number goes from 9 for\n"
- "the lowest priority to 1 for the highest priority. Todo having higher\n"
- "priorities are placed first (at the top) inside the todo panel.\n\n"
- "If you want to raise the priority of a todo item, you need to press '+'.\n"
- "In doing so, the number in front of this item will decrease, meaning its\n"
- "priority increases. The item position inside the todo panel may change,\n"
- "depending on the priority of the items above it.\n\n"
- "At the opposite, to lower a todo priority, press '-'. The todo position\n"
- "may also change depending on the priority of the items below.");
-
- hscr[HELP_REPEAT].title = _("Repeat:\n");
- hscr[HELP_REPEAT].text =
+ "selected item in the ToDo list. Priorities are represented by the "
+ "number\nappearing in front of the todo description. This number goes "
+ "from 9 for\nthe lowest priority to 1 for the highest priority. "
+ "Todo having higher\npriorities are placed first (at the top) inside the "
+ "todo panel.\n\n"
+ "If you want to raise the priority of a todo item, you need to press "
+ "'+'.\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 '-'. The todo position"
+ "\nmay also change depending on the priority of the items below.");
+
+ hscr[HELP_REPEAT].title = _("Repeat:\n");
+ hscr[HELP_REPEAT].text =
_("Pressing 'R' allows you to repeat an event or an appointment. You must\n"
- "first select the item to be repeated by moving inside the appointment\n"
- "panel. Then pressing 'R' will lead you to a set of three questions, with\n"
- "which you will be able to specify the repetition 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.");
-
- hscr[HELP_FLAG].title = _("Flag Item:\n");
- hscr[HELP_FLAG].text =
+ "first select the item to be repeated by moving inside the appointment\n"
+ "panel. "
+ "Then pressing 'R' will lead you to a set of three questions, with\n"
+ "which you will be able to specify the repetition 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.");
+
+ hscr[HELP_FLAG].title = _("Flag Item:\n");
+ hscr[HELP_FLAG].text =
_("Pressing '!' toggles an appointment's 'important' flag.\n\n"
- "If an item is flagged as important, an exclamation mark appears in front\n"
- "of it, and you will be warned if time gets closed to the appointment\n"
- "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,\n"
- "and how long before it he gets notified.");
-
- hscr[HELP_CONFIG].title = _("Config:\n");
- hscr[HELP_CONFIG].text =
+ "If an item is flagged as important, an exclamation mark appears in front"
+ "\nof it, and you will be warned if time gets closed to the appointment\n"
+ "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");
+ hscr[HELP_CONFIG].text =
_("Pressing 'C' leads to the configuration submenu, from which you can\n"
- "select between color, layout, and general options.\n"
- "\nThe color submenu lets you choose the color theme.\n"
- "\nThe layout submenu lets you choose the Calcurse screen layout, in other\n"
- "words where to place the three different panels on the screen.\n"
- "\nThe general options submenu brings a screen with the different options\n"
- "which modifies the way Calcurse interacts with the user.\n"
- "\nThe notify submenu allows you to change the notify-bar settings.\n"
- "\nDo not forget to save the calendar data to retrieve your configuration\n"
- "next time you launch Calcurse.");
-
- hscr[HELP_GENERAL].title = _("General keybindings:\n");
- hscr[HELP_GENERAL].text =
+ "select between color, layout, and general options.\n"
+ "\nThe color submenu lets you choose the color theme.\n"
+ "\nThe layout submenu lets you choose the Calcurse screen layout, in other"
+ "\nwords where to place the three different panels on the screen.\n"
+ "\nThe general options submenu brings a screen with the different options"
+ "\nwhich modifies the way Calcurse interacts with the user.\n"
+ "\nThe notify submenu allows you to change the notify-bar settings.\n"
+ "\nDo not forget to save the calendar data to retrieve your configuration"
+ "\nnext time you launch Calcurse.");
+
+ hscr[HELP_GENERAL].title = _("General keybindings:\n");
+ hscr[HELP_GENERAL].text =
_("Some of the keybindings apply whatever panel is selected. They are\n"
- "called general keybinding and involve the <CONTROL> key, which is\n"
- "represented by the '^' sign in the status bar panel. For example,\n"
- "'^A' means you need to press <CONTROL> and 'A' simultaneously to\n"
- "activate the command. Here is the list of all the general keybindings,\n"
- "together with their corresponding action:\n\n"
- " '^R' : Redraw function -> redraws calcurse panels, this is useful if\n"
- " you resize your terminal screen or when\n"
- " garbage appears inside the display\n"
- " '^A' : Add Appointment -> add an appointment or an event\n"
- " '^T' : Add ToDo -> add a todo\n"
- " '^H' : -1 Day -> move to previous day\n"
- " '^L' : +1 Day -> move to next day\n"
- " '^K' : -1 Week -> move to previous week\n"
- " '^J' : +1 Week -> move to next week");
-
- hscr[HELP_OTHER].title = _("OtherCmd:\n");
- hscr[HELP_OTHER].text =
+ "called general keybinding and involve the <CONTROL> key, which is\n"
+ "represented by the '^' sign in the status bar panel. For example,\n"
+ "'^A' means you need to press <CONTROL> and 'A' simultaneously to\n"
+ "activate the command. Here is the list of all the general keybindings,\n"
+ "together with their corresponding action:\n\n"
+ " '^R' : Redraw function -> redraws calcurse panels, this is useful if\n"
+ " you resize your terminal screen or when\n"
+ " garbage appears inside the display\n"
+ " '^A' : Add Appointment -> add an appointment or an event\n"
+ " '^T' : Add ToDo -> add a todo\n"
+ " '^H' : -1 Day -> move to previous day\n"
+ " '^L' : +1 Day -> move to next day\n"
+ " '^K' : -1 Week -> move to previous week\n"
+ " '^J' : +1 Week -> move to next week");
+
+ hscr[HELP_OTHER].title = _("OtherCmd:\n");
+ hscr[HELP_OTHER].text =
_("Pressing 'O' allows you to 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 'O' to see the next set of\n"
- "commands together with their keybindings.\n"
- "Once the last status bar page is reached, pressing 'O' another time\n"
- "leads you back to the first page.");
-
- hscr[HELP_CREDITS].title = _("Calcurse - text-based organizer");
- hscr[HELP_CREDITS].text =
- _("Copyright (c) 2004-2007 Frederic Culot\n"
- "\n"
- "This program is free software; you can redistribute it and/or modify\n"
- "it under the terms of the GNU General Public License as published by\n"
- "the Free Software Foundation; either version 2 of the License, or\n"
- "(at your option) any later version.\n"
- "\nThis program is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "GNU General Public License for more details.\n"
- "\n\n"
- "Send your feedback or comments to : calcurse@culot.org\n"
- "Calcurse home page : http://culot.org/calcurse");
-
- need_resize = 0;
- page = oldpage = HELP_MAIN;
- help_wins_init(&hwin, &hpad, PADOFFSET);
-
- /* Display the help screen related to user input. */
- while ( ch != 'q' ) {
- erase_window_part(hwin.p, 1, TITLELINES, col - 2, hwin.h - 2);
-
- switch (ch) {
-
- case KEY_RESIZE:
- help_wins_reset(&hwin, &hpad, PADOFFSET);
- first_line = 0;
- nl = write_help_pad(&hpad, &hscr[oldpage]);
- need_resize = 1;
- break;
-
- case CTRL('n') :
- if (nl > (first_line + hwin.h - (PADOFFSET + 1)))
- first_line++;
- break;
-
- case CTRL('p') :
- if (first_line > 0)
- first_line--;
- break;
-
- default:
- page = wanted_page(ch);
- if (page != NOPAGE) {
- first_line = 0;
- nl = write_help_pad(&hpad, &hscr[page]);
- oldpage = page;
- }
- break;
- }
-
- /* Draw the scrollbar if necessary. */
- text_lines = hwin.h - (PADOFFSET + 1);
- if (nl > text_lines) {
- float ratio = ((float) text_lines + 1) / ((float) nl);
- int sbar_length = (int) (ratio * text_lines);
- int highend = (int) (ratio * first_line);
- int sbar_top = highend + TITLELINES + 1;
-
- if ((sbar_top + sbar_length) > hwin.h - 1)
- sbar_length = hwin.h - 1 - sbar_top;
- draw_scrollbar(hwin.p, sbar_top, col - 2,
- sbar_length, TITLELINES + 1, hwin.h - 1, true);
- }
-
- wmove(win[STA].p, 0, 0);
- wnoutrefresh(hwin.p);
- pnoutrefresh(hpad.p, first_line, 0, PADOFFSET, PADOFFSET,
- hwin.h - 2, col - PADOFFSET);
- doupdate();
- ch = wgetch(win[STA].p);
- ch = tolower(ch);
+ "Because the terminal screen is too narrow to display all of the\n"
+ "available commands, you need to press 'O' to see the next set of\n"
+ "commands together with their keybindings.\n"
+ "Once the last status bar page is reached, pressing 'O' another time\n"
+ "leads you back to the first page.");
+
+ hscr[HELP_CREDITS].title = _("Calcurse - text-based organizer");
+ hscr[HELP_CREDITS].text =
+ _("Copyright (c) 2004-2008 Frederic Culot\n"
+ "\n"
+ "This program is free software; you can redistribute it and/or modify\n"
+ "it under the terms of the GNU General Public License as published by\n"
+ "the Free Software Foundation; either version 2 of the License, or\n"
+ "(at your option) any later version.\n"
+ "\nThis program is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ "GNU General Public License for more details.\n"
+ "\n\n"
+ "Send your feedback or comments to : calcurse@culot.org\n"
+ "Calcurse home page : http://culot.org/calcurse");
+
+ need_resize = 0;
+ page = oldpage = HELP_MAIN;
+ help_wins_init (&hwin, &hpad, PADOFFSET);
+
+ /* Display the help screen related to user input. */
+ while (ch != 'q')
+ {
+ erase_window_part (hwin.p, 1, TITLELINES, col - 2, hwin.h - 2);
+
+ switch (ch)
+ {
+ case KEY_RESIZE:
+ help_wins_reset (&hwin, &hpad, PADOFFSET);
+ first_line = 0;
+ nl = write_help_pad (&hpad, &hscr[oldpage]);
+ need_resize = 1;
+ break;
+
+ case CTRL ('n'):
+ if (nl > (first_line + hwin.h - (PADOFFSET + 1)))
+ first_line++;
+ break;
+
+ case CTRL ('p'):
+ if (first_line > 0)
+ first_line--;
+ break;
+
+ default:
+ page = wanted_page (ch);
+ if (page != NOPAGE)
+ {
+ first_line = 0;
+ nl = write_help_pad (&hpad, &hscr[page]);
+ oldpage = page;
+ }
+ break;
+ }
+
+ /* Draw the scrollbar if necessary. */
+ text_lines = hwin.h - (PADOFFSET + 1);
+ if (nl > text_lines)
+ {
+ float ratio = ((float) text_lines + 1) / ((float) nl);
+ int sbar_length = (int) (ratio * text_lines);
+ int highend = (int) (ratio * first_line);
+ int sbar_top = highend + TITLELINES + 1;
+
+ if ((sbar_top + sbar_length) > hwin.h - 1)
+ sbar_length = hwin.h - 1 - sbar_top;
+ draw_scrollbar (hwin.p, sbar_top, col - 2,
+ sbar_length, TITLELINES + 1, hwin.h - 1, true);
}
- delwin(hpad.p);
- delwin(hwin.p);
- if (need_resize)
- wins_reset();
+ wmove (win[STA].p, 0, 0);
+ wnoutrefresh (hwin.p);
+ pnoutrefresh (hpad.p, first_line, 0, PADOFFSET, PADOFFSET,
+ hwin.h - 2, col - PADOFFSET);
+ doupdate ();
+ ch = wgetch (win[STA].p);
+ ch = tolower (ch);
+ }
+
+ delwin (hpad.p);
+ delwin (hwin.p);
+ if (need_resize)
+ wins_reset ();
}