mirror of
https://github.com/profanity-im/profanity.git
synced 2024-10-27 20:30:13 -04:00
Merge pull request #1845 from profanity-im/fix/avatar
Improvements for /executable and /avatar code
This commit is contained in:
commit
5bf178818a
@ -277,6 +277,7 @@ static Autocomplete correction_ac;
|
|||||||
static Autocomplete avatar_ac;
|
static Autocomplete avatar_ac;
|
||||||
static Autocomplete url_ac;
|
static Autocomplete url_ac;
|
||||||
static Autocomplete executable_ac;
|
static Autocomplete executable_ac;
|
||||||
|
static Autocomplete executable_param_ac;
|
||||||
static Autocomplete intype_ac;
|
static Autocomplete intype_ac;
|
||||||
static Autocomplete mood_ac;
|
static Autocomplete mood_ac;
|
||||||
static Autocomplete mood_type_ac;
|
static Autocomplete mood_type_ac;
|
||||||
@ -1115,6 +1116,11 @@ cmd_ac_init(void)
|
|||||||
autocomplete_add(executable_ac, "urlopen");
|
autocomplete_add(executable_ac, "urlopen");
|
||||||
autocomplete_add(executable_ac, "urlsave");
|
autocomplete_add(executable_ac, "urlsave");
|
||||||
autocomplete_add(executable_ac, "editor");
|
autocomplete_add(executable_ac, "editor");
|
||||||
|
autocomplete_add(executable_ac, "vcard_photo");
|
||||||
|
|
||||||
|
executable_param_ac = autocomplete_new();
|
||||||
|
autocomplete_add(executable_param_ac, "set");
|
||||||
|
autocomplete_add(executable_param_ac, "default");
|
||||||
|
|
||||||
intype_ac = autocomplete_new();
|
intype_ac = autocomplete_new();
|
||||||
autocomplete_add(intype_ac, "console");
|
autocomplete_add(intype_ac, "console");
|
||||||
@ -1701,6 +1707,7 @@ cmd_ac_reset(ProfWin* window)
|
|||||||
autocomplete_reset(avatar_ac);
|
autocomplete_reset(avatar_ac);
|
||||||
autocomplete_reset(url_ac);
|
autocomplete_reset(url_ac);
|
||||||
autocomplete_reset(executable_ac);
|
autocomplete_reset(executable_ac);
|
||||||
|
autocomplete_reset(executable_param_ac);
|
||||||
autocomplete_reset(intype_ac);
|
autocomplete_reset(intype_ac);
|
||||||
autocomplete_reset(mood_ac);
|
autocomplete_reset(mood_ac);
|
||||||
autocomplete_reset(mood_type_ac);
|
autocomplete_reset(mood_type_ac);
|
||||||
@ -1888,6 +1895,7 @@ cmd_ac_uninit(void)
|
|||||||
autocomplete_free(avatar_ac);
|
autocomplete_free(avatar_ac);
|
||||||
autocomplete_free(url_ac);
|
autocomplete_free(url_ac);
|
||||||
autocomplete_free(executable_ac);
|
autocomplete_free(executable_ac);
|
||||||
|
autocomplete_free(executable_param_ac);
|
||||||
autocomplete_free(intype_ac);
|
autocomplete_free(intype_ac);
|
||||||
autocomplete_free(adhoc_cmd_ac);
|
autocomplete_free(adhoc_cmd_ac);
|
||||||
autocomplete_free(lastactivity_ac);
|
autocomplete_free(lastactivity_ac);
|
||||||
@ -4381,6 +4389,31 @@ _executable_autocomplete(ProfWin* window, const char* const input, gboolean prev
|
|||||||
{
|
{
|
||||||
char* result = NULL;
|
char* result = NULL;
|
||||||
|
|
||||||
|
result = autocomplete_param_with_ac(input, "/executable avatar", executable_param_ac, TRUE, previous);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = autocomplete_param_with_ac(input, "/executable urlopen", executable_param_ac, TRUE, previous);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = autocomplete_param_with_ac(input, "/executable urlsave", executable_param_ac, TRUE, previous);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = autocomplete_param_with_ac(input, "/executable vcard_photo", executable_param_ac, TRUE, previous);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = autocomplete_param_with_ac(input, "/executable editor", executable_param_ac, TRUE, previous);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
result = autocomplete_param_with_ac(input, "/executable", executable_ac, TRUE, previous);
|
result = autocomplete_param_with_ac(input, "/executable", executable_ac, TRUE, previous);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -2437,7 +2437,7 @@ static const struct cmd_t command_defs[] = {
|
|||||||
{ "set <path>", "Set avatar to the image at <path>." },
|
{ "set <path>", "Set avatar to the image at <path>." },
|
||||||
{ "disable", "Disable avatar publishing; your avatar will not display to others." },
|
{ "disable", "Disable avatar publishing; your avatar will not display to others." },
|
||||||
{ "get <barejid>", "Download the avatar. barejid is the JID to download avatar from." },
|
{ "get <barejid>", "Download the avatar. barejid is the JID to download avatar from." },
|
||||||
{ "open <barejid>", "Download avatar and open it with command." })
|
{ "open <barejid>", "Download avatar and open it with command. See /executable." })
|
||||||
CMD_EXAMPLES(
|
CMD_EXAMPLES(
|
||||||
"/avatar set ~/images/avatar.png",
|
"/avatar set ~/images/avatar.png",
|
||||||
"/avatar disable",
|
"/avatar disable",
|
||||||
@ -2534,23 +2534,27 @@ static const struct cmd_t command_defs[] = {
|
|||||||
CMD_TAGS(
|
CMD_TAGS(
|
||||||
CMD_TAG_DISCOVERY)
|
CMD_TAG_DISCOVERY)
|
||||||
CMD_SYN(
|
CMD_SYN(
|
||||||
"/executable avatar <cmd>",
|
"/executable avatar set <cmdtemplate>",
|
||||||
|
"/executable avatar default",
|
||||||
"/executable urlopen set <cmdtemplate>",
|
"/executable urlopen set <cmdtemplate>",
|
||||||
"/executable urlopen default",
|
"/executable urlopen default",
|
||||||
"/executable urlsave set <cmdtemplate>",
|
"/executable urlsave set <cmdtemplate>",
|
||||||
"/executable urlsave default",
|
"/executable urlsave default",
|
||||||
"/executable editor set <cmdtemplate>",
|
"/executable editor set <cmdtemplate>",
|
||||||
|
"/executable editor default",
|
||||||
"/executable vcard_photo set <cmdtemplate>",
|
"/executable vcard_photo set <cmdtemplate>",
|
||||||
"/executable vcard_photo default")
|
"/executable vcard_photo default")
|
||||||
CMD_DESC(
|
CMD_DESC(
|
||||||
"Configure executable that should be called upon a certain command.")
|
"Configure executable that should be called upon a certain command.")
|
||||||
CMD_ARGS(
|
CMD_ARGS(
|
||||||
{ "avatar", "Set executable that is run by /avatar open. Use your favorite image viewer." },
|
{ "avatar set", "Set executable that is run by /avatar open. Use your favorite image viewer." },
|
||||||
|
{ "avatar default", "Restore to default settings." },
|
||||||
{ "urlopen set", "Set executable that is run by /url open. Takes a command template that replaces %u and %p with the URL and path respectively." },
|
{ "urlopen set", "Set executable that is run by /url open. Takes a command template that replaces %u and %p with the URL and path respectively." },
|
||||||
{ "urlopen default", "Restore to default settings." },
|
{ "urlopen default", "Restore to default settings." },
|
||||||
{ "urlsave set", "Set executable that is run by /url save. Takes a command template that replaces %u and %p with the URL and path respectively." },
|
{ "urlsave set", "Set executable that is run by /url save. Takes a command template that replaces %u and %p with the URL and path respectively." },
|
||||||
{ "urlsave default", "Use the built-in download method for saving." },
|
{ "urlsave default", "Use the built-in download method for saving." },
|
||||||
{ "editor set", "Set editor to be used with /editor. Needs a terminal editor or a script to run a graphical editor." },
|
{ "editor set", "Set editor to be used with /editor. Needs a terminal editor or a script to run a graphical editor." },
|
||||||
|
{ "editor default", "Restore to default settings." },
|
||||||
{ "vcard_photo set", "Set executable that is run by /vcard photo open. Takes a command template that replaces %p with the path" },
|
{ "vcard_photo set", "Set executable that is run by /vcard photo open. Takes a command template that replaces %p with the path" },
|
||||||
{ "vcard_photo default", "Restore to default settings." })
|
{ "vcard_photo default", "Restore to default settings." })
|
||||||
CMD_EXAMPLES(
|
CMD_EXAMPLES(
|
||||||
|
@ -9309,9 +9309,6 @@ cmd_avatar(ProfWin* window, const char* const command, gchar** args)
|
|||||||
avatar_get_by_nick(args[1], false);
|
avatar_get_by_nick(args[1], false);
|
||||||
} else if (g_strcmp0(args[0], "open") == 0) {
|
} else if (g_strcmp0(args[0], "open") == 0) {
|
||||||
avatar_get_by_nick(args[1], true);
|
avatar_get_by_nick(args[1], true);
|
||||||
} else if (g_strcmp0(args[0], "cmd") == 0) {
|
|
||||||
prefs_set_string(PREF_AVATAR_CMD, args[1]);
|
|
||||||
cons_show("Avatar cmd set to: %s", args[1]);
|
|
||||||
} else {
|
} else {
|
||||||
cons_bad_cmd_usage(command);
|
cons_bad_cmd_usage(command);
|
||||||
}
|
}
|
||||||
@ -9620,15 +9617,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
cmd_executable_avatar(ProfWin* window, const char* const command, gchar** args)
|
_cmd_executable_template(const preference_t setting, const char* command, gchar** args)
|
||||||
{
|
|
||||||
prefs_set_string(PREF_AVATAR_CMD, args[1]);
|
|
||||||
cons_show("`avatar` command set to invoke '%s'", args[1]);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
cmd_executable_urlopen(ProfWin* window, const char* const command, gchar** args)
|
|
||||||
{
|
{
|
||||||
guint num_args = g_strv_length(args);
|
guint num_args = g_strv_length(args);
|
||||||
if (num_args < 2) {
|
if (num_args < 2) {
|
||||||
@ -9638,14 +9627,17 @@ cmd_executable_urlopen(ProfWin* window, const char* const command, gchar** args)
|
|||||||
|
|
||||||
if (g_strcmp0(args[1], "set") == 0 && num_args >= 3) {
|
if (g_strcmp0(args[1], "set") == 0 && num_args >= 3) {
|
||||||
gchar* str = g_strjoinv(" ", &args[2]);
|
gchar* str = g_strjoinv(" ", &args[2]);
|
||||||
prefs_set_string(PREF_URL_OPEN_CMD, str);
|
prefs_set_string(setting, str);
|
||||||
cons_show("`url open` command set to invoke '%s'", str);
|
cons_show("`%s` command set to invoke '%s'", command, str);
|
||||||
g_free(str);
|
g_free(str);
|
||||||
|
|
||||||
} else if (g_strcmp0(args[1], "default") == 0) {
|
} else if (g_strcmp0(args[1], "default") == 0) {
|
||||||
prefs_set_string(PREF_URL_OPEN_CMD, NULL);
|
prefs_set_string(setting, NULL);
|
||||||
gchar* def = prefs_get_string(PREF_URL_OPEN_CMD);
|
gchar* def = prefs_get_string(setting);
|
||||||
cons_show("`url open` command set to invoke %s (default)", def);
|
if (def == NULL) {
|
||||||
|
def = g_strdup("built-in method");
|
||||||
|
}
|
||||||
|
cons_show("`%s` command set to invoke %s (default)", command, def);
|
||||||
g_free(def);
|
g_free(def);
|
||||||
} else {
|
} else {
|
||||||
cons_bad_cmd_usage(command);
|
cons_bad_cmd_usage(command);
|
||||||
@ -9654,64 +9646,36 @@ cmd_executable_urlopen(ProfWin* window, const char* const command, gchar** args)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
cmd_executable_avatar(ProfWin* window, const char* const command, gchar** args)
|
||||||
|
{
|
||||||
|
return _cmd_executable_template(PREF_AVATAR_CMD, args[0], args);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
cmd_executable_urlopen(ProfWin* window, const char* const command, gchar** args)
|
||||||
|
{
|
||||||
|
return _cmd_executable_template(PREF_URL_OPEN_CMD, args[0], args);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
cmd_executable_urlsave(ProfWin* window, const char* const command, gchar** args)
|
cmd_executable_urlsave(ProfWin* window, const char* const command, gchar** args)
|
||||||
{
|
{
|
||||||
|
return _cmd_executable_template(PREF_URL_SAVE_CMD, args[0], args);
|
||||||
guint num_args = g_strv_length(args);
|
|
||||||
if (num_args < 2) {
|
|
||||||
cons_bad_cmd_usage(command);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_strcmp0(args[1], "set") == 0 && num_args >= 3) {
|
|
||||||
gchar* str = g_strjoinv(" ", &args[2]);
|
|
||||||
prefs_set_string(PREF_URL_SAVE_CMD, str);
|
|
||||||
cons_show("`url save` command set to invoke '%s'", str);
|
|
||||||
g_free(str);
|
|
||||||
|
|
||||||
} else if (g_strcmp0(args[1], "default") == 0) {
|
|
||||||
prefs_set_string(PREF_URL_SAVE_CMD, NULL);
|
|
||||||
cons_show("`url save` will use built-in download method (default)");
|
|
||||||
} else {
|
|
||||||
cons_bad_cmd_usage(command);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
cmd_executable_editor(ProfWin* window, const char* const command, gchar** args)
|
cmd_executable_editor(ProfWin* window, const char* const command, gchar** args)
|
||||||
{
|
{
|
||||||
guint num_args = g_strv_length(args);
|
return _cmd_executable_template(PREF_COMPOSE_EDITOR, args[0], args);
|
||||||
|
|
||||||
if (g_strcmp0(args[1], "set") == 0 && num_args >= 3) {
|
|
||||||
prefs_set_string(PREF_COMPOSE_EDITOR, args[2]);
|
|
||||||
cons_show("`editor` command set to invoke '%s'", args[2]);
|
|
||||||
} else {
|
|
||||||
cons_bad_cmd_usage(command);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
cmd_executable_vcard_photo(ProfWin* window, const char* const command, gchar** args)
|
cmd_executable_vcard_photo(ProfWin* window, const char* const command, gchar** args)
|
||||||
{
|
{
|
||||||
if (g_strcmp0(args[1], "set") == 0 && args[2] != NULL) {
|
return _cmd_executable_template(PREF_VCARD_PHOTO_CMD, args[0], args);
|
||||||
prefs_set_string(PREF_VCARD_PHOTO_CMD, args[2]);
|
|
||||||
cons_show("`vcard photo open` command set to invoke '%s'", args[2]);
|
|
||||||
} else if (g_strcmp0(args[1], "default") == 0) {
|
|
||||||
prefs_set_string(PREF_VCARD_PHOTO_CMD, NULL);
|
|
||||||
char* cmd = prefs_get_string(PREF_VCARD_PHOTO_CMD);
|
|
||||||
cons_show("`vcard photo open` command set to invoke '%s' (default)", cmd);
|
|
||||||
g_free(cmd);
|
|
||||||
} else {
|
|
||||||
cons_bad_cmd_usage(command);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
gboolean
|
gboolean
|
||||||
cmd_mam(ProfWin* window, const char* const command, gchar** args)
|
cmd_mam(ProfWin* window, const char* const command, gchar** args)
|
||||||
{
|
{
|
||||||
|
@ -2314,7 +2314,7 @@ _get_default_string(preference_t pref)
|
|||||||
case PREF_COLOR_NICK:
|
case PREF_COLOR_NICK:
|
||||||
return "false";
|
return "false";
|
||||||
case PREF_AVATAR_CMD:
|
case PREF_AVATAR_CMD:
|
||||||
return "xdg-open";
|
return "xdg-open %p";
|
||||||
case PREF_URL_OPEN_CMD:
|
case PREF_URL_OPEN_CMD:
|
||||||
return "xdg-open %u";
|
return "xdg-open %u";
|
||||||
case PREF_VCARD_PHOTO_CMD:
|
case PREF_VCARD_PHOTO_CMD:
|
||||||
|
Loading…
Reference in New Issue
Block a user