mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Added /theme list command
This commit is contained in:
parent
4c243722c6
commit
986967ef89
@ -1223,10 +1223,19 @@ _cmd_prefs(gchar **args, struct cmd_help_t help)
|
|||||||
static gboolean
|
static gboolean
|
||||||
_cmd_theme(gchar **args, struct cmd_help_t help)
|
_cmd_theme(gchar **args, struct cmd_help_t help)
|
||||||
{
|
{
|
||||||
if (theme_load(args[0])) {
|
// list themes
|
||||||
|
if (strcmp(args[0], "list") == 0) {
|
||||||
|
GSList *themes = theme_list();
|
||||||
|
cons_show_themes(themes);
|
||||||
|
g_slist_free_full(themes, g_free);
|
||||||
|
|
||||||
|
// load a theme
|
||||||
|
} else if (theme_load(args[0])) {
|
||||||
ui_load_colours();
|
ui_load_colours();
|
||||||
prefs_set_theme(args[0]);
|
prefs_set_theme(args[0]);
|
||||||
cons_show("Loaded theme: %s", args[0]);
|
cons_show("Loaded theme: %s", args[0]);
|
||||||
|
|
||||||
|
// theme not found
|
||||||
} else {
|
} else {
|
||||||
cons_show("Couldn't find theme: %s", args[0]);
|
cons_show("Couldn't find theme: %s", args[0]);
|
||||||
}
|
}
|
||||||
|
21
src/theme.c
21
src/theme.c
@ -112,6 +112,27 @@ theme_init(const char * const theme_name)
|
|||||||
_load_colours();
|
_load_colours();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSList *
|
||||||
|
theme_list(void)
|
||||||
|
{
|
||||||
|
GSList *result = NULL;
|
||||||
|
gchar *themes_dir = files_get_themes_dir();
|
||||||
|
GDir *themes = g_dir_open(themes_dir, 0, NULL);
|
||||||
|
if (themes != NULL) {
|
||||||
|
const gchar *theme = g_dir_read_name(themes);
|
||||||
|
while (theme != NULL) {
|
||||||
|
result = g_slist_append(result, strdup(theme));
|
||||||
|
theme = g_dir_read_name(themes);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_dir_close(themes);
|
||||||
|
return result;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
theme_load(const char * const theme_name)
|
theme_load(const char * const theme_name)
|
||||||
{
|
{
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
void theme_init(const char * const theme_name);
|
void theme_init(const char * const theme_name);
|
||||||
void theme_init_colours(void);
|
void theme_init_colours(void);
|
||||||
gboolean theme_load(const char * const theme_name);
|
gboolean theme_load(const char * const theme_name);
|
||||||
|
GSList* theme_list(void);
|
||||||
void theme_close(void);
|
void theme_close(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
1
src/ui.h
1
src/ui.h
@ -154,6 +154,7 @@ void cons_show_contacts(GSList * list);
|
|||||||
void cons_check_version(gboolean not_available_msg);
|
void cons_check_version(gboolean not_available_msg);
|
||||||
void cons_show_wins(void);
|
void cons_show_wins(void);
|
||||||
void cons_show_status(const char * const contact);
|
void cons_show_status(const char * const contact);
|
||||||
|
void cons_show_themes(GSList *themes);
|
||||||
|
|
||||||
// status bar actions
|
// status bar actions
|
||||||
void status_bar_refresh(void);
|
void status_bar_refresh(void);
|
||||||
|
@ -1289,6 +1289,22 @@ cons_show_connection_prefs(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cons_show_themes(GSList *themes)
|
||||||
|
{
|
||||||
|
cons_show("");
|
||||||
|
|
||||||
|
if (themes == NULL) {
|
||||||
|
cons_show("No available themes.");
|
||||||
|
} else {
|
||||||
|
cons_show("Available themes:");
|
||||||
|
while (themes != NULL) {
|
||||||
|
cons_show(themes->data);
|
||||||
|
themes = g_slist_next(themes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cons_prefs(void)
|
cons_prefs(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user