static bool_t search_cb (GtkTreeModel * model, int column, const char * key, GtkTreeIter * iter, void * user) { GtkTreePath * path = gtk_tree_model_get_path (model, iter); g_return_val_if_fail (path, TRUE); int row = gtk_tree_path_get_indices (path)[0]; gtk_tree_path_free (path); char * title = aud_playlist_get_title (row); g_return_val_if_fail (title, TRUE); Index * keys = str_list_to_index (key, " "); int count = index_count (keys); bool_t match = FALSE; for (int i = 0; i < count; i ++) { if (strstr_nocase_utf8 (title, index_get (keys, i))) match = TRUE; else { match = FALSE; break; } } index_free_full (keys, (IndexFreeFunc) str_unref); str_unref (title); return ! match; /* TRUE == not matched, FALSE == matched */ }
static void get_value (void * user, int row, int column, GValue * value) { switch (column) { case 0:; char * title = aud_playlist_get_title (row); g_value_set_string (value, title); str_unref (title); break; case 1: g_value_set_int (value, aud_playlist_entry_count (row)); break; } }
static void find_playlist (void) { playlist_id = -1; for (int p = 0; playlist_id < 0 && p < aud_playlist_count (); p ++) { char * title = aud_playlist_get_title (p); if (! strcmp (title, _("Library"))) playlist_id = aud_playlist_get_unique_id (p); str_unref (title); } }
static void set_tab_label (gint list, GtkLabel * label) { gchar * title = aud_playlist_get_title (list); if (list == aud_playlist_get_playing ()) { gchar * markup = g_markup_printf_escaped ("<b>%s</b>", title); gtk_label_set_markup (label, markup); g_free (markup); } else gtk_label_set_text (label, title); str_unref (title); }
EXPORT void audgui_show_playlist_rename (int playlist) { GtkWidget * dialog = gtk_dialog_new_with_buttons (_("Rename Playlist"), NULL, 0, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_ACCEPT); GtkWidget * entry = gtk_entry_new (); char * title = aud_playlist_get_title (playlist); gtk_entry_set_text ((GtkEntry *) entry, title); str_unref (title); gtk_entry_set_activates_default ((GtkEntry *) entry, TRUE); gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) dialog), entry, FALSE, FALSE, 0); g_object_set_data ((GObject *) dialog, "entry", entry); g_signal_connect (dialog, "response", (GCallback) rename_cb, GINT_TO_POINTER (playlist)); gtk_widget_show_all (dialog); }
static bool_t search_cb (GtkTreeModel * model, int column, const char * key, GtkTreeIter * iter, void * user) { GtkTreePath * path = gtk_tree_model_get_path (model, iter); g_return_val_if_fail (path, TRUE); int row = gtk_tree_path_get_indices (path)[0]; gtk_tree_path_free (path); char * temp = aud_playlist_get_title (row); g_return_val_if_fail (temp, TRUE); char * title = g_utf8_strdown (temp, -1); str_unref (temp); temp = g_utf8_strdown (key, -1); char * * keys = g_strsplit (temp, " ", 0); g_free (temp); bool_t match = FALSE; for (int i = 0; keys[i]; i ++) { if (! keys[i][0]) continue; if (strstr (title, keys[i])) match = TRUE; else { match = FALSE; break; } } g_free (title); g_strfreev (keys); return ! match; /* TRUE == not matched, FALSE == matched */ }
void ui_playlist_notebook_edit_tab_title(GtkWidget *ebox) { if (!gtk_notebook_get_show_tabs(UI_PLAYLIST_NOTEBOOK)) return; if (ebox == NULL || !GTK_IS_EVENT_BOX(ebox)) { GtkWidget *page = gtk_notebook_get_nth_page(UI_PLAYLIST_NOTEBOOK, aud_playlist_get_active()); ebox = gtk_notebook_get_tab_label(UI_PLAYLIST_NOTEBOOK, page); } GtkWidget *label = g_object_get_data(G_OBJECT(ebox), "label"); GtkWidget *entry = g_object_get_data(G_OBJECT(ebox), "entry"); gtk_widget_hide(label); gchar * title = aud_playlist_get_title (aud_playlist_get_active ()); gtk_entry_set_text ((GtkEntry *) entry, title); str_unref (title); gtk_widget_grab_focus(entry); gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); gtk_widget_show(entry); ui_playlist_notebook_tab_title_editing = ebox; }
EXPORT void audgui_confirm_playlist_delete (int playlist) { GtkWidget * window, * vbox, * hbox, * label, * button; char * message; if (aud_get_bool ("audgui", "no_confirm_playlist_delete")) { aud_playlist_delete (playlist); if (playlist > 0) aud_playlist_set_active (playlist - 1); return; } window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint ((GtkWindow *) window, GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title ((GtkWindow *) window, _("Close Playlist")); gtk_window_set_resizable ((GtkWindow *) window, FALSE); gtk_container_set_border_width ((GtkContainer *) window, 6); audgui_destroy_on_escape (window); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) window, vbox); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); gtk_box_pack_start ((GtkBox *) hbox, gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG), FALSE, FALSE, 0); char * title = aud_playlist_get_title (playlist); message = g_strdup_printf (_("Are you sure you want to close %s? If you " "do, any changes made since the playlist was exported will be lost."), title); str_unref (title); label = gtk_label_new (message); g_free (message); gtk_label_set_line_wrap ((GtkLabel *) label, TRUE); gtk_widget_set_size_request (label, 320, -1); gtk_box_pack_start ((GtkBox *) hbox, label, TRUE, FALSE, 0); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); button = gtk_check_button_new_with_mnemonic (_("_Don't show this message again")); gtk_box_pack_start ((GtkBox *) hbox, button, FALSE, FALSE, 0); g_signal_connect (button, "toggled", (GCallback) no_confirm_cb, NULL); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); button = gtk_button_new_from_stock (GTK_STOCK_NO); gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); g_signal_connect_swapped (button, "clicked", (GCallback) gtk_widget_destroy, window); button = gtk_button_new_from_stock (GTK_STOCK_YES); gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); gtk_widget_set_can_default (button, TRUE); gtk_widget_grab_default (button); gtk_widget_grab_focus (button); g_signal_connect ((GObject *) button, "clicked", (GCallback) confirm_delete_cb, GINT_TO_POINTER (aud_playlist_get_unique_id (playlist))); g_signal_connect_swapped ((GObject *) button, "clicked", (GCallback) gtk_widget_destroy, window); gtk_widget_show_all (window); }