about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-10-22 23:58:47 +0100
committerJames Booth <boothj5@gmail.com>2012-10-22 23:58:47 +0100
commit15de3d4a8f019d4115ba0b9ea5850ff8225e8574 (patch)
treed9b0b455eea9995320ac1cfccb3de4efc13bb785
parentf5f7b99e1a7ce8494f263f7019131aa2f8f681c9 (diff)
downloadprofani-tty-15de3d4a8f019d4115ba0b9ea5850ff8225e8574.tar.gz
Split help into sections
Most of the time complete help was too big for the screen
-rw-r--r--src/command.c20
-rw-r--r--src/ui.h4
-rw-r--r--src/windows.c42
3 files changed, 63 insertions, 3 deletions
diff --git a/src/command.c b/src/command.c
index 79b92ffc..b536cc80 100644
--- a/src/command.c
+++ b/src/command.c
@@ -91,13 +91,15 @@ static struct cmd_t main_commands[] =
 {
     { "/help",
         _cmd_help,
-        { "/help [command]", "Show help summary, or help on a specific command",
-        { "/help [command]",
+        { "/help [area|command]", "Show help summary, or help on a specific area or command",
+        { "/help [area|command]",
           "---------------",
-          "List all commands with short help on what they do.",
+          "Show help options.",
+          "Specify an area (basic, status, settings, navigation) for more help on that area.",
           "Specify the command if you want more detailed help on a specific command.",
           "",
           "Example : /help connect",
+          "Example : /help settings",
           NULL } } },
 
     { "/connect",
@@ -363,6 +365,10 @@ cmd_init(void)
     log_info("Initialising commands");
     commands_ac = p_autocomplete_new();
     help_ac = p_autocomplete_new();
+    p_autocomplete_add(help_ac, strdup("basic"));
+    p_autocomplete_add(help_ac, strdup("status"));
+    p_autocomplete_add(help_ac, strdup("settings"));
+    p_autocomplete_add(help_ac, strdup("navigation"));
 
     unsigned int i;
     for (i = 0; i < ARRAY_SIZE(main_commands); i++) {
@@ -551,6 +557,14 @@ _cmd_help(const char * const inp, struct cmd_help_t help)
 {
     if (strcmp(inp, "/help") == 0) {
         cons_help();
+    } else if (strcmp(inp, "/help basic") == 0) {
+        cons_basic_help();
+    } else if (strcmp(inp, "/help status") == 0) {
+        cons_status_help();
+    } else if (strcmp(inp, "/help settings") == 0) { 
+        cons_settings_help();
+    } else if (strcmp(inp, "/help navigation") == 0) {
+        cons_navigation_help();
     } else {
         char *cmd = strndup(inp+6, strlen(inp)-6);
         char cmd_with_slash[1 + strlen(cmd) + 1];
diff --git a/src/ui.h b/src/ui.h
index 671ca703..8b2e5163 100644
--- a/src/ui.h
+++ b/src/ui.h
@@ -104,6 +104,10 @@ void win_remind(void);
 
 // console window actions
 void cons_help(void);
+void cons_basic_help(void);
+void cons_settings_help(void);
+void cons_status_help(void);
+void cons_navigation_help(void);
 void cons_prefs(void);
 void cons_bad_command(const char * const cmd);
 void cons_show(const char * const cmd, ...);
diff --git a/src/windows.c b/src/windows.c
index 8fe78365..7daf9f1b 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -575,9 +575,33 @@ void
 cons_help(void)
 {
     cons_show("");
+    cons_show("Choose an area you need help with:");
+    cons_show("");
+    cons_show("/help basic      - Basic commands, for connecting, chatting etc.");
+    cons_show("/help status     - How to change your status.");
+    cons_show("/help settings   - Commands for configuring Profanity.");
+    cons_show("/help navigation - How to navigate around Profanity.");
+    cons_show("");
+
+    if (_curr_prof_win == 0)
+        dirty = TRUE;
+}
+
+void
+cons_basic_help(void)
+{
+    cons_show("");
     cons_show("Basic Commands:");
     _cons_show_basic_help();
 
+    if (_curr_prof_win == 0)
+        dirty = TRUE;
+}
+
+void
+cons_settings_help(void)
+{
+    cons_show("");
     cons_show("Settings:");
     cons_show("");
 
@@ -587,7 +611,16 @@ cons_help(void)
         cons_show("%-25s: %s", help->usage, help->short_help);
         settings_helpers = g_slist_next(settings_helpers);
     }
+    
+    cons_show("");
+
+    if (_curr_prof_win == 0)
+        dirty = TRUE;
+}
 
+void
+cons_status_help(void)
+{
     cons_show("");
     cons_show("Status changes:");
     cons_show("");
@@ -600,6 +633,15 @@ cons_help(void)
     }
 
     cons_show("");
+
+    if (_curr_prof_win == 0)
+        dirty = TRUE;
+}
+
+void
+cons_navigation_help(void)
+{
+    cons_show("");
     cons_show("Navigation:");
     cons_show("");
     cons_show("F1                       : This console window.");