예제 #1
0
int
completion_list_add_keys_codes_for_reset_cb (void *data,
                                             const char *completion_item,
                                             struct t_gui_buffer *buffer,
                                             struct t_gui_completion *completion)
{
    int i;
    struct t_gui_key *ptr_key, *ptr_default_key;
    char *expanded_name;

    /* make C compiler happy */
    (void) data;
    (void) completion_item;
    (void) buffer;

    for (i = 0; i < GUI_KEY_NUM_CONTEXTS; i++)
    {
        /* keys added or redefined */
        for (ptr_key = gui_keys[i]; ptr_key; ptr_key = ptr_key->next_key)
        {
            ptr_default_key = gui_key_search (gui_default_keys[i], ptr_key->key);
            if (!ptr_default_key
                || (strcmp (ptr_default_key->command, ptr_key->command) != 0))
            {
                expanded_name = gui_key_get_expanded_name (ptr_key->key);
                gui_completion_list_add (completion,
                                         (expanded_name) ? expanded_name : ptr_key->key,
                                         0, WEECHAT_LIST_POS_SORT);
                if (expanded_name)
                    free (expanded_name);
            }
        }

        /* keys deleted */
        for (ptr_default_key = gui_default_keys[i]; ptr_default_key;
             ptr_default_key = ptr_default_key->next_key)
        {
            ptr_key = gui_key_search (gui_keys[i], ptr_default_key->key);
            if (!ptr_key)
            {
                expanded_name = gui_key_get_expanded_name (ptr_default_key->key);
                gui_completion_list_add (completion,
                                         (expanded_name) ? expanded_name : ptr_default_key->key,
                                         0, WEECHAT_LIST_POS_SORT);
                if (expanded_name)
                    free (expanded_name);
            }
        }
    }

    return WEECHAT_RC_OK;
}
예제 #2
0
void
gui_key_default_bind (int context, const char *key, const char *command)
{
    struct t_gui_key *ptr_key;
    char *internal_code;

    internal_code = gui_key_get_internal_code (key);

    ptr_key = gui_key_search (gui_keys[context],
                              (internal_code) ? internal_code : key);
    if (!ptr_key)
        gui_key_new (NULL, context, key, command);

    if (internal_code)
        free (internal_code);
}