1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-06-16 21:35:24 +00:00

WIP: Add /theme properties command

This commit is contained in:
James Booth 2016-01-21 00:50:55 +00:00
parent 5bccee93cc
commit adb470c454
8 changed files with 239 additions and 3 deletions

View File

@ -1727,13 +1727,15 @@ static struct cmd_t command_defs[] =
CMD_SYN(
"/theme list",
"/theme load <theme>",
"/theme colours")
"/theme colours",
"/theme properties")
CMD_DESC(
"Load a theme, includes colours and UI options.")
CMD_ARGS(
{ "list", "List all available themes." },
{ "load <theme>", "Load the specified theme. 'default' will reset to the default theme." },
{ "colours", "Show the colour values as rendered by the terminal." })
{ "colours", "Show the colour values as rendered by the terminal." },
{ "properties", "Show each themed property." })
CMD_EXAMPLES(
"/theme list",
"/theme load forest")
@ -2106,6 +2108,7 @@ cmd_init(void)
autocomplete_add(theme_ac, "load");
autocomplete_add(theme_ac, "list");
autocomplete_add(theme_ac, "colours");
autocomplete_add(theme_ac, "properties");
disco_ac = autocomplete_new();
autocomplete_add(disco_ac, "info");

View File

@ -1401,6 +1401,8 @@ cmd_theme(ProfWin *window, const char *const command, gchar **args)
// show colours
} else if (g_strcmp0(args[0], "colours") == 0) {
cons_theme_colours();
} else if (g_strcmp0(args[0], "properties") == 0) {
cons_theme_properties();
} else {
cons_bad_cmd_usage(command);
}

View File

@ -2003,6 +2003,106 @@ cons_get_string(ProfConsoleWin *conswin)
return strdup("Console");
}
void
cons_theme_properties(void)
{
ProfWin *console = wins_get_console();
cons_show("Title bar:");
win_print(console, '-', 0, NULL, NO_EOL, THEME_TITLE_TEXT, "", "titlebar.text ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_BRACKET, "", "titlebar.brackets");
win_print(console, '-', 0, NULL, NO_DATE, THEME_TEXT, "", "");
win_print(console, '-', 0, NULL, NO_EOL, THEME_TITLE_UNENCRYPTED, "", "titlebar.unencrypted ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_ENCRYPTED, "", "titlebar.encrypted ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_UNTRUSTED, "", "titlebar.untrusted ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_TRUSTED, "", "titlebar.trusted");
win_print(console, '-', 0, NULL, NO_DATE, THEME_TEXT, "", "");
win_print(console, '-', 0, NULL, NO_EOL, THEME_TITLE_CHAT, "", "titlebar.chat ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_ONLINE, "", "titlebar.online ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_AWAY, "", "titlebar.away ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_XA, "", "titlebar.xa ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_DND, "", "titlebar.dnd ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TITLE_OFFLINE, "", "titlebar.offline");
win_print(console, '-', 0, NULL, NO_DATE, THEME_TEXT, "", "");
cons_show("");
cons_show("Status bar:");
win_print(console, '-', 0, NULL, NO_EOL, THEME_STATUS_TEXT, "", "statusbar.text ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_STATUS_BRACKET, "", "statusbar.brackets ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_STATUS_ACTIVE, "", "statusbar.active ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_STATUS_NEW, "", "statusbar.new");
win_print(console, '-', 0, NULL, NO_DATE, THEME_TEXT, "", "");
cons_show("");
cons_show("Main text:");
win_print(console, '-', 0, NULL, NO_EOL, THEME_TIME, "", "main.time ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_TEXT, "", "main.text ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_SPLASH, "", "main.splash ");
win_print(console, '-', 0, NULL, NO_DATE, THEME_ERROR, "", "error");
win_print(console, '-', 0, NULL, NO_EOL, THEME_OTR_STARTED_TRUSTED, "", "otr.started.trusted ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_OTR_STARTED_UNTRUSTED, "", "otr.started.untrusted ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_OTR_ENDED, "", "otr.ended ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_OTR_TRUSTED, "", "otr.trusted ");
win_print(console, '-', 0, NULL, NO_DATE, THEME_OTR_UNTRUSTED, "", "otr.untrusted");
cons_show("");
cons_show("Messages:");
win_print(console, '-', 0, NULL, NO_EOL, THEME_ME, "", "me ");
win_print(console, '-', 0, NULL, NO_DATE, THEME_TEXT_ME, "", "main.text.me");
win_print(console, '-', 0, NULL, NO_EOL, THEME_THEM, "", "them ");
win_print(console, '-', 0, NULL, NO_DATE, THEME_TEXT_THEM, "", "main.text.them");
cons_show("");
cons_show("Presence:");
win_print(console, '-', 0, NULL, NO_EOL, THEME_CHAT, "", "chat ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", "online ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_AWAY, "", "away ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_XA, "", "xa ");
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DND, "", "dnd ");
win_print(console, '-', 0, NULL, NO_DATE, THEME_OFFLINE, "", "offline");
win_print(console, '-', 0, NULL, NO_EOL, THEME_SUBSCRIBED, "", "subscribed ");
win_print(console, '-', 0, NULL, NO_DATE, THEME_UNSUBSCRIBED, "", "unsubscribed");
cons_show("");
win_print(console, '-', 0, NULL, 0, THEME_INCOMING, "", "incoming");
win_print(console, '-', 0, NULL, 0, THEME_TYPING, "", "typing");
win_print(console, '-', 0, NULL, 0, THEME_GONE, "", "gone");
win_print(console, '-', 0, NULL, 0, THEME_ROOMINFO, "", "roominfo");
win_print(console, '-', 0, NULL, 0, THEME_ROOMMENTION, "", "roommention");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_HEADER, "", "roster.header");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_CHAT, "", "roster.chat");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_ONLINE, "", "roster.online");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_AWAY, "", "roster.away");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_XA, "", "roster.xa");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_DND, "", "roster.dnd");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_OFFLINE, "", "roster.offline");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_CHAT_ACTIVE, "", "roster.chat.active");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_ONLINE_ACTIVE, "", "roster.online.active");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_AWAY_ACTIVE, "", "roster.away.active");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_XA_ACTIVE, "", "roster.xa.active");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_DND_ACTIVE, "", "roster.dnd.active");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_OFFLINE_ACTIVE, "", "roster.offline.active");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_CHAT_UNREAD, "", "roster.chat.unread");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_ONLINE_UNREAD, "", "roster.online.unread");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_AWAY_UNREAD, "", "roster.away.unread");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_XA_UNREAD, "", "roster.xa.unread");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_DND_UNREAD, "", "roster.dnd.unread");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_OFFLINE_UNREAD, "", "roster.offline.unread");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_ROOM, "", "roster.room");
win_print(console, '-', 0, NULL, 0, THEME_ROSTER_ROOM_UNREAD, "", "roster.room.unread");
win_print(console, '-', 0, NULL, 0, THEME_OCCUPANTS_HEADER, "", "occupants.header");
win_print(console, '-', 0, NULL, 0, THEME_RECEIPT_SENT, "", "receipt.sent");
win_print(console, '-', 0, NULL, 0, THEME_INPUT_TEXT, "", "input.text");
cons_show("");
}
void
cons_theme_colours(void)
{

View File

@ -301,6 +301,7 @@ void cons_autoconnect_setting(void);
void cons_inpblock_setting(void);
void cons_show_contact_online(PContact contact, Resource *resource, GDateTime *last_activity);
void cons_show_contact_offline(PContact contact, char *resource, char *status);
void cons_theme_properties(void);
void cons_theme_colours(void);
void cons_show_tlscert(TLSCertificate *cert);
void cons_show_tlscert_summary(TLSCertificate *cert);

View File

@ -1086,6 +1086,7 @@ _win_print(ProfWin *window, const char show_char, int pad_indent, GDateTime *tim
if ((flags & NO_DATE) == 0) {
if (date_fmt && strlen(date_fmt)) {
if ((flags & NO_COLOUR_DATE) == 0) {
wbkgdset(window->layout->win, theme_attrs(THEME_TIME));
wattron(window->layout->win, theme_attrs(THEME_TIME));
}
wprintw(window->layout->win, "%s %c ", date_fmt, show_char);
@ -1108,6 +1109,7 @@ _win_print(ProfWin *window, const char show_char, int pad_indent, GDateTime *tim
colour = theme_attrs(THEME_RECEIPT_SENT);
}
wbkgdset(window->layout->win, colour);
wattron(window->layout->win, colour);
if (strncmp(message, "/me ", 4) == 0) {
wprintw(window->layout->win, "*%s ", from);
@ -1121,8 +1123,10 @@ _win_print(ProfWin *window, const char show_char, int pad_indent, GDateTime *tim
if (!me_message) {
if (receipt && !receipt->received) {
wbkgdset(window->layout->win, theme_attrs(THEME_RECEIPT_SENT));
wattron(window->layout->win, theme_attrs(THEME_RECEIPT_SENT));
} else {
wbkgdset(window->layout->win, theme_attrs(theme_item));
wattron(window->layout->win, theme_attrs(theme_item));
}
}

View File

@ -444,6 +444,7 @@ void cons_show_contact_online(PContact contact, Resource *resource, GDateTime *l
void cons_show_contact_offline(PContact contact, char *resource, char *status) {}
void cons_theme_colours(void) {}
void cons_theme_properties(void) {}
// title bar
void title_bar_set_presence(contact_presence_t presence) {}

125
themes/bios Normal file
View File

@ -0,0 +1,125 @@
[colours]
bkgnd=blue
titlebar=white
titlebar.text=black
titlebar.brackets=black
titlebar.unencrypted=black
titlebar.encrypted=black
titlebar.untrusted=black
titlebar.trusted=black
titlebar.online=black
titlebar.offline=black
titlebar.away=black
titlebar.xa=black
titlebar.dnd=black
titlebar.chat=black
statusbar=white
statusbar.text=black
statusbar.brackets=black
statusbar.active=black
statusbar.new=black
main.text=white
main.text.me=cyan
main.text.them=bold_white
main.splash=bold_green
main.time=bold_cyan
input.text=bold_white
subscribed=bold_green
unsubscribed=red
otr.started.trusted=green
otr.started.untrusted=yellow
otr.ended=red
otr.trusted=green
otr.untrusted=yellow
online=bold_green
away=bold_cyan
chat=bold_white
dnd=magenta
xa=bold_blue
offline=red
incoming=bold_yellow
typing=yellow
gone=red
error=red
roominfo=yellow
roommention=bold_red
me=blue
them=bold_green
roster.header=bold_yellow
roster.chat=white
roster.online=green
roster.away=cyan
roster.xa=blue
roster.dnd=magenta
roster.offline=red
roster.chat.active=white
roster.online.active=green
roster.away.active=cyan
roster.xa.active=blue
roster.dnd.active=magenta
roster.offline.active=red
roster.chat.unread=bold_white
roster.online.unread=bold_green
roster.away.unread=bold_cyan
roster.xa.unread=bold_blue
roster.dnd.unread=bold_magenta
roster.offline.unread=bold_red
roster.room=green
roster.room.unread=bold_green
occupants.header=bold_yellow
receipt.sent=bold_black
[ui]
beep=false
flash=false
splash=true
wrap=true
time.console=%H:%M:%S
time.chat=%d/%m/%y %H:%M:%S
time.muc=%d/%m/%y %H:%M:%S
time.mucconfig=off
time.private=%d/%m/%y %H:%M:%S
time.xml=%H:%M:%S
time.statusbar=%H:%M:%S
time.lastactivity=%d/%m/%y %H:%M:%S
privileges=true
presence=true
intype=true
enc.warn=true
resource.title=true
resource.message=true
statuses.console=all
statuses.chat=all
statuses.muc=none
roster=true
roster.offline=true
roster.empty=false
roster.by=group
roster.order=presence
roster.unread=before
roster.count=true
roster.priority=false
roster.size=25
roster.wrap=true
roster.header.char=@
roster.contact.indent=1
roster.resource=true
roster.resource.char=/
roster.resource.indent=1
roster.resource.join=true
roster.presence=true
roster.presence.indent=-1
roster.status=true
roster.contacts=true
roster.rooms=true
roster.rooms.order=name
roster.rooms.unread=before
roster.rooms.pos=last
occupants=true
occupants.size=15
occupants.jid=false
wins.autotidy=true
otr.char=@
pgp.char=%
tls.show=true
console.muc=first

View File

@ -1,7 +1,7 @@
[colours]
bkgnd=default
titlebar=blue
titlebar.text=bold_white
titlebar.text=white
titlebar.brackets=white
titlebar.unencrypted=bold_red
titlebar.encrypted=bold_white