diff options
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/calcurse.c | 101 | ||||
-rw-r--r-- | src/calcurse.h | 3 | ||||
-rw-r--r-- | src/help.c | 144 |
4 files changed, 149 insertions, 100 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 85a8780..3559a25 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,6 +19,7 @@ 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 2588721..3879fec 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -500,107 +500,8 @@ static inline void key_generic_cmd(void) if (!strcmp(cmd_name, "help")) { char *topic = strtok(NULL, " "); - char *topic_res = topic; - char path[BUFSIZ]; - - if (!topic_res) - topic_res = "intro"; - snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic_res); - - if (!io_file_exists(path) && keys_str2int(topic_res) > 0 && - keys_get_action(keys_str2int(topic_res)) > 0) { - int ch = keys_str2int(topic_res); - enum key action = keys_get_action(ch); - topic_res = (char *)keys_get_label(action); - snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic_res); - } - - if (!io_file_exists(path)) { - if (!strcmp(topic_res, "generic-credits")) - topic_res = "credits"; - else if (!strcmp(topic_res, "generic-help")) - topic_res = "intro"; - else if (!strcmp(topic_res, "generic-save")) - topic_res = "save"; - else if (!strcmp(topic_res, "generic-copy")) - topic_res = "copy_paste"; - else if (!strcmp(topic_res, "generic-paste")) - topic_res = "copy_paste"; - else if (!strcmp(topic_res, "generic-change-view")) - topic_res = "tab"; - else if (!strcmp(topic_res, "generic-import")) - topic_res = "import"; - else if (!strcmp(topic_res, "generic-export")) - topic_res = "export"; - else if (!strcmp(topic_res, "generic-goto")) - topic_res = "goto"; - else if (!strcmp(topic_res, "generic-other-cmd")) - topic_res = "other"; - else if (!strcmp(topic_res, "generic-config-menu")) - topic_res = "config"; - else if (!strcmp(topic_res, "generic-add-appt")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-add-todo")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-prev-day")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-next-day")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-prev-week")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-next-week")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-prev-month")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-next-month")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-prev-year")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-next-year")) - topic_res = "general"; - else if (!strcmp(topic_res, "generic-goto-today")) - topic_res = "general"; - else if (!strcmp(topic_res, "move-right")) - topic_res = "displacement"; - else if (!strcmp(topic_res, "move-left")) - topic_res = "displacement"; - else if (!strcmp(topic_res, "move-down")) - topic_res = "displacement"; - else if (!strcmp(topic_res, "move-up")) - topic_res = "displacement"; - else if (!strcmp(topic_res, "start-of-week")) - topic_res = "displacement"; - else if (!strcmp(topic_res, "end-of-week")) - topic_res = "displacement"; - else if (!strcmp(topic_res, "add-item")) - topic_res = "add"; - else if (!strcmp(topic_res, "del-item")) - topic_res = "delete"; - else if (!strcmp(topic_res, "edit-item")) - topic_res = "edit"; - else if (!strcmp(topic_res, "view-item")) - topic_res = "view"; - else if (!strcmp(topic_res, "pipe-item")) - topic_res = "pipe"; - else if (!strcmp(topic_res, "flag-item")) - topic_res = "flag"; - else if (!strcmp(topic_res, "repeat")) - topic_res = "repeat"; - else if (!strcmp(topic_res, "edit-note")) - topic_res = "enote"; - else if (!strcmp(topic_res, "view-note")) - topic_res = "vnote"; - else if (!strcmp(topic_res, "raise-priority")) - topic_res = "priority"; - else if (!strcmp(topic_res, "lower-priority")) - topic_res = "priority"; - snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic_res); - } - - if (io_file_exists(path)) { - wins_launch_external(path, conf.pager); - } else { + if (!display_help(topic)) { char error_msg[BUFSIZ]; snprintf(error_msg, BUFSIZ, diff --git a/src/calcurse.h b/src/calcurse.h index a433361..38b18e1 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -723,6 +723,9 @@ void event_paste_item(struct event *, long); enum getstr getstring(WINDOW *, char *, int, int, int); int updatestring(WINDOW *, char **, int, int); +/* help.c */ +int display_help(const char *); + /* ical.c */ void ical_import_data(FILE *, FILE *, unsigned *, unsigned *, unsigned *, unsigned *, unsigned *); diff --git a/src/help.c b/src/help.c new file mode 100644 index 0000000..bf755fd --- /dev/null +++ b/src/help.c @@ -0,0 +1,144 @@ +/* + * 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 "calcurse.h" + +int display_help(const char *topic) +{ + char path[BUFSIZ]; + + if (!topic) + topic = "intro"; + + snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic); + + if (!io_file_exists(path) && keys_str2int(topic) > 0 && + keys_get_action(keys_str2int(topic)) > 0) { + int ch = keys_str2int(topic); + enum key action = keys_get_action(ch); + topic = keys_get_label(action); + snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic); + } + + if (!io_file_exists(path)) { + if (!strcmp(topic, "generic-credits")) + topic = "credits"; + else if (!strcmp(topic, "generic-help")) + topic = "intro"; + else if (!strcmp(topic, "generic-save")) + topic = "save"; + else if (!strcmp(topic, "generic-copy")) + topic = "copy_paste"; + else if (!strcmp(topic, "generic-paste")) + topic = "copy_paste"; + else if (!strcmp(topic, "generic-change-view")) + topic = "tab"; + else if (!strcmp(topic, "generic-import")) + topic = "import"; + else if (!strcmp(topic, "generic-export")) + topic = "export"; + else if (!strcmp(topic, "generic-goto")) + topic = "goto"; + else if (!strcmp(topic, "generic-other-cmd")) + topic = "other"; + else if (!strcmp(topic, "generic-config-menu")) + topic = "config"; + else if (!strcmp(topic, "generic-add-appt")) + topic = "general"; + else if (!strcmp(topic, "generic-add-todo")) + topic = "general"; + else if (!strcmp(topic, "generic-prev-day")) + topic = "general"; + else if (!strcmp(topic, "generic-next-day")) + topic = "general"; + else if (!strcmp(topic, "generic-prev-week")) + topic = "general"; + else if (!strcmp(topic, "generic-next-week")) + topic = "general"; + else if (!strcmp(topic, "generic-prev-month")) + topic = "general"; + else if (!strcmp(topic, "generic-next-month")) + topic = "general"; + else if (!strcmp(topic, "generic-prev-year")) + topic = "general"; + else if (!strcmp(topic, "generic-next-year")) + topic = "general"; + else if (!strcmp(topic, "generic-goto-today")) + topic = "general"; + else if (!strcmp(topic, "move-right")) + topic = "displacement"; + else if (!strcmp(topic, "move-left")) + topic = "displacement"; + else if (!strcmp(topic, "move-down")) + topic = "displacement"; + else if (!strcmp(topic, "move-up")) + topic = "displacement"; + else if (!strcmp(topic, "start-of-week")) + topic = "displacement"; + else if (!strcmp(topic, "end-of-week")) + topic = "displacement"; + else if (!strcmp(topic, "add-item")) + topic = "add"; + else if (!strcmp(topic, "del-item")) + topic = "delete"; + else if (!strcmp(topic, "edit-item")) + topic = "edit"; + else if (!strcmp(topic, "view-item")) + topic = "view"; + else if (!strcmp(topic, "pipe-item")) + topic = "pipe"; + else if (!strcmp(topic, "flag-item")) + topic = "flag"; + else if (!strcmp(topic, "repeat")) + topic = "repeat"; + else if (!strcmp(topic, "edit-note")) + topic = "enote"; + else if (!strcmp(topic, "view-note")) + topic = "vnote"; + else if (!strcmp(topic, "raise-priority")) + topic = "priority"; + else if (!strcmp(topic, "lower-priority")) + topic = "priority"; + snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic); + } + + if (io_file_exists(path)) { + wins_launch_external(path, conf.pager); + return 1; + } else { + return 0; + } +} |