示例#1
0
static gint
search_window_key_pressed(GtkWidget * widget, GdkEventKey * kevent) {

    switch (kevent->keyval) {

    case GDK_Escape:
        close_button_clicked(NULL, NULL);
        return TRUE;
        break;

    case GDK_Return:
    case GDK_KP_Enter:
        search_button_clicked(NULL, NULL);
        return TRUE;
        break;
    }

    return FALSE;
}
示例#2
0
static gint
search_button_clicked(GtkWidget * widget, gpointer data) {

    int valid;
    const char * key_string = gtk_entry_get_text(GTK_ENTRY(searchkey_entry));
    char key[MAXLEN];
    GPatternSpec * pattern;

    int i;
    GtkTreeIter list_iter;
    GtkTreeIter sfac_iter;

    GList * node = NULL;


    get_toggle_buttons_state();

    clear_search_store();

    valid = 0;
    for (i = 0; key_string[i] != '\0'; i++) {
        if ((key_string[i] != '?') && (key_string[i] != '*')) {
            valid = 1;
            break;
        }
    }
    if (!valid) {
        return TRUE;
    }

    if (!casesens) {
        key_string = g_utf8_strup(key_string, -1);
    }

    if (exactonly) {
        strcpy(key, key_string);
    } else {
        snprintf(key, MAXLEN-1, "*%s*", key_string);
    }

    pattern = g_pattern_spec_new(key);

    for (node = playlists; node; node = node->next) {

        playlist_t * pl = (playlist_t *)node->data;

        i = 0;
        while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(pl->store),
                                             &list_iter, NULL, i++)) {

            if (gtk_tree_model_iter_has_child(GTK_TREE_MODEL(pl->store), &list_iter)) {

                int j = 0;
                GtkTreeIter iter;

                search_foreach(pl, pattern, &list_iter, 1/*album node*/);

                while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(pl->store),
                                                     &iter, &list_iter, j++)) {
                    search_foreach(pl, pattern, &iter, 0/*track node*/);
                }
            } else {
                search_foreach(pl, pattern, &list_iter, 0/*track node*/);
            }
        }
    }

    g_pattern_spec_free(pattern);

    if (selectfc) {

        if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(search_store), &sfac_iter) == TRUE)
            gtk_tree_selection_select_iter(search_select, &sfac_iter);

        close_button_clicked(NULL, NULL);
    }

    return TRUE;
}
示例#3
0
文件: window.c 项目: codyd51/axle
static void minimize_button_clicked(Button* b) {
	close_button_clicked(b);
}