Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/commands.c @ 1760:106bbf7e97da
Sort and pretty-format options list
author | Myhailo Danylenko <isbear@ukrpost.net> |
---|---|
date | Sat, 13 Mar 2010 16:19:46 +0200 |
parents | 7ee390513463 |
children | 61f0482d3993 |
comparison
equal
deleted
inserted
replaced
1759:921429804e20 | 1760:106bbf7e97da |
---|---|
2082 g_free(group_utf8); | 2082 g_free(group_utf8); |
2083 g_free(newgroupname); | 2083 g_free(newgroupname); |
2084 update_roster = TRUE; | 2084 update_roster = TRUE; |
2085 } | 2085 } |
2086 | 2086 |
2087 static void print_option_cb(char *k, char *v, void *f) | 2087 static void list_option_cb(char *k, char *v, void *f) |
2088 { | 2088 { |
2089 char *format = (char *)f; | 2089 GSList **list = f; |
2090 scr_LogPrint (LPRINT_NORMAL, format, k, v); | 2090 *list = g_slist_insert_sorted(*list, k, (GCompareFunc)strcmp); |
2091 } | 2091 } |
2092 | 2092 |
2093 static void do_set(char *arg) | 2093 static void do_set(char *arg) |
2094 { | 2094 { |
2095 guint assign; | 2095 guint assign; |
2096 gchar *option, *value; | 2096 gchar *option, *value; |
2097 gchar *option_utf8; | 2097 gchar *option_utf8; |
2098 | 2098 |
2099 if (!*arg) { | 2099 if (!*arg) { |
2100 // list all set options | 2100 // list all set options |
2101 settings_foreach(SETTINGS_TYPE_OPTION, print_option_cb, "%s = [%s]"); | 2101 GSList *list = NULL; |
2102 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); | 2102 // Get sorted list of keys |
2103 update_roster = TRUE; | 2103 settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list); |
2104 if (list) { | |
2105 gsize max = 0; | |
2106 GSList *lel; | |
2107 gchar *format; | |
2108 // Find out maximum key length | |
2109 for (lel = list; lel; lel = lel->next) { | |
2110 const gchar *key = lel->data; | |
2111 gsize len = strlen(key); | |
2112 if (len > max) | |
2113 max = len; | |
2114 } | |
2115 // Print out list of options | |
2116 format = g_strdup_printf("%%-%us = [%%s]", max); | |
2117 for (lel = list; lel; lel = lel->next) { | |
2118 const gchar *key = lel->data; | |
2119 scr_LogPrint(LPRINT_NORMAL, format, key, settings_opt_get(key)); | |
2120 } | |
2121 g_free(format); | |
2122 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); | |
2123 update_roster = TRUE; | |
2124 } else | |
2125 scr_LogPrint(LPRINT_NORMAL, "No options found."); | |
2104 return; | 2126 return; |
2105 } | 2127 } |
2106 | 2128 |
2107 assign = parse_assigment(arg, &option, &value); | 2129 assign = parse_assigment(arg, &option, &value); |
2108 if (!option) { | 2130 if (!option) { |