static GtkWidget * create_playlist_manager (void) { GtkWidget * playman_win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint ((GtkWindow *) playman_win, GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title ((GtkWindow *) playman_win, _("Playlist Manager")); gtk_container_set_border_width ((GtkContainer *) playman_win, 6); gtk_widget_set_size_request (playman_win, 400, 250); g_signal_connect (playman_win, "destroy", (GCallback) destroy_cb, NULL); audgui_destroy_on_escape (playman_win); GtkWidget * playman_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) playman_win, playman_vbox); /* ListView */ GtkWidget * playman_pl_lv = audgui_list_new (& callbacks, NULL, aud_playlist_count ()); audgui_list_add_column (playman_pl_lv, _("Title"), 0, G_TYPE_STRING, -1); audgui_list_add_column (playman_pl_lv, _("Entries"), 1, G_TYPE_INT, 7); audgui_list_set_highlight (playman_pl_lv, aud_playlist_get_playing ()); gtk_tree_view_set_search_equal_func ((GtkTreeView *) playman_pl_lv, search_cb, NULL, NULL); hook_associate ("playlist update", update_hook, playman_pl_lv); hook_associate ("playlist activate", activate_hook, playman_pl_lv); hook_associate ("playlist set playing", position_hook, playman_pl_lv); GtkWidget * playman_pl_lv_sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) playman_pl_lv_sw, GTK_SHADOW_IN); gtk_scrolled_window_set_policy ((GtkScrolledWindow *) playman_pl_lv_sw, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add ((GtkContainer *) playman_pl_lv_sw, playman_pl_lv); gtk_box_pack_start ((GtkBox *) playman_vbox, playman_pl_lv_sw, TRUE, TRUE, 0); /* ButtonBox */ GtkWidget * playman_button_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); GtkWidget * new_button = audgui_button_new (_("_New"), "document-new", new_cb, NULL); GtkWidget * delete_button = audgui_button_new (_("_Remove"), "edit-delete", delete_cb, NULL); GtkWidget * rename_button = audgui_button_new (_("Ren_ame"), "insert-text", rename_cb, NULL); GtkWidget * play_button = audgui_button_new (_("_Play"), "media-playback-start", play_cb, NULL); gtk_container_add ((GtkContainer *) playman_button_hbox, new_button); gtk_container_add ((GtkContainer *) playman_button_hbox, delete_button); gtk_box_pack_end ((GtkBox *) playman_button_hbox, play_button, FALSE, FALSE, 0); gtk_box_pack_end ((GtkBox *) playman_button_hbox, rename_button, FALSE, FALSE, 0); gtk_container_add ((GtkContainer *) playman_vbox, playman_button_hbox); /* CheckButton */ GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) playman_vbox, hbox, FALSE, FALSE, 0); GtkWidget * check_button = gtk_check_button_new_with_mnemonic (_("_Close dialog on activating playlist")); gtk_box_pack_start ((GtkBox *) hbox, check_button, FALSE, FALSE, 0); gtk_toggle_button_set_active ((GtkToggleButton *) check_button, aud_get_bool ("audgui", "playlist_manager_close_on_activate")); g_signal_connect (check_button, "toggled", (GCallback) close_on_activate_cb, NULL); return playman_win; }
void audgui_jump_to_time (void) { if (! aud_drct_get_playing ()) return; if (window) { gtk_window_present ((GtkWindow *) window); return; } window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", (GCallback) gtk_widget_destroyed, & window); gtk_window_set_type_hint ((GtkWindow *) window, GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title ((GtkWindow *) window, _("Jump to Time")); gtk_window_set_resizable ((GtkWindow *) window, FALSE); gtk_container_set_border_width ((GtkContainer *) window, 6); audgui_destroy_on_escape (window); GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) window, vbox); GtkWidget * hbox_new = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox_new, FALSE, FALSE, 0); GtkWidget * time_entry = gtk_entry_new (); gtk_entry_set_activates_default ((GtkEntry *) time_entry, TRUE); gtk_box_pack_start ((GtkBox *) hbox_new, time_entry, FALSE, FALSE, 0); GtkWidget * label = gtk_label_new (_("mm:ss")); gtk_box_pack_start ((GtkBox *) hbox_new, label, FALSE, FALSE, 0); GtkWidget * bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start ((GtkBox *) vbox, bbox, TRUE, TRUE, 0); gtk_button_box_set_layout ((GtkButtonBox *) bbox, GTK_BUTTONBOX_END); gtk_box_set_spacing ((GtkBox *) bbox, 6); GtkWidget * cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL); gtk_container_add ((GtkContainer *) bbox, cancel); g_signal_connect_swapped (cancel, "clicked", (GCallback) gtk_widget_destroy, window); GtkWidget * jump = gtk_button_new_from_stock (GTK_STOCK_JUMP_TO); gtk_widget_set_can_default (jump, TRUE); gtk_container_add ((GtkContainer *) bbox, jump); g_signal_connect (jump, "clicked", (GCallback) jump_to_time_cb, time_entry); unsigned int tindex = aud_drct_get_time () / 1000; char time_str[10]; snprintf (time_str, sizeof time_str, "%u:%2.2u", tindex / 60, tindex % 60); gtk_entry_set_text ((GtkEntry *) time_entry, time_str); gtk_editable_select_region ((GtkEditable *) time_entry, 0, -1); gtk_widget_show_all (window); gtk_widget_grab_default (jump); }
static void crossfade_configure (void) { if (config_window == NULL) { GtkWidget * vbox, * hbox, * slider, * button; config_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint ((GtkWindow *) config_window, GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_resizable ((GtkWindow *) config_window, FALSE); gtk_window_set_title ((GtkWindow *) config_window, _("Crossfade " "Preferences")); gtk_container_set_border_width ((GtkContainer *) config_window, 6); g_signal_connect (config_window, "destroy", (GCallback) gtk_widget_destroyed, & config_window); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) config_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_label_new (_("Overlap (in " "seconds):")), TRUE, FALSE, 0); slider = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 1, 10, 1); gtk_range_set_value ((GtkRange *) slider, crossfade_length); gtk_widget_set_size_request (slider, 100, -1); gtk_box_pack_start ((GtkBox *) hbox, slider, FALSE, FALSE, 0); g_signal_connect (slider, "value-changed", (GCallback) value_changed, & crossfade_length); 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_CLOSE); gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); gtk_widget_set_can_default (button, TRUE); gtk_widget_grab_default (button); g_signal_connect_swapped (button, "clicked", (GCallback) gtk_widget_destroy, config_window); audgui_destroy_on_escape (config_window); gtk_widget_show_all (vbox); } gtk_window_present ((GtkWindow *) config_window); }
void audgui_show_about_window (void) { if (about_window) { gtk_window_present ((GtkWindow *) about_window); return; } const char * brief, * const * credits, * const * translators; aud_get_audacious_credits (& brief, & credits, & translators); about_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title ((GtkWindow *) about_window, _("About Audacious")); gtk_window_set_resizable ((GtkWindow *) about_window, FALSE); gtk_container_set_border_width ((GtkContainer *) about_window, 3); audgui_destroy_on_escape (about_window); g_signal_connect (about_window, "destroy", (GCallback) gtk_widget_destroyed, & about_window); GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) about_window, vbox); char * name = g_strdup_printf ("%s/images/about-logo.png", aud_get_path (AUD_PATH_DATA_DIR)); GtkWidget * image = gtk_image_new_from_file (name); gtk_box_pack_start ((GtkBox *) vbox, image, FALSE, FALSE, 0); g_free (name); char * markup = g_strdup_printf (brief, VERSION); GtkWidget * label = gtk_label_new (NULL); gtk_label_set_markup ((GtkLabel *) label, markup); gtk_label_set_justify ((GtkLabel *) label, GTK_JUSTIFY_CENTER); gtk_box_pack_start ((GtkBox *) vbox, label, FALSE, FALSE, 0); g_free (markup); GtkWidget * exp = gtk_expander_new (_("Credits")); GtkWidget * notebook = create_credits_notebook (credits, translators); gtk_container_add ((GtkContainer *) exp, notebook); gtk_box_pack_start ((GtkBox *) vbox, exp, TRUE, TRUE, 0); gtk_widget_show_all (about_window); }
static GtkWidget * create_window (void) { const char * const names[AUD_EQUALIZER_NBANDS] = {N_("31 Hz"), N_("63 Hz"), N_("125 Hz"), N_("250 Hz"), N_("500 Hz"), N_("1 kHz"), N_("2 kHz"), N_("4 kHz"), N_("8 kHz"), N_("16 kHz")}; GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title ((GtkWindow *) window, _("Equalizer")); gtk_window_set_type_hint ((GtkWindow *) window, GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_resizable ((GtkWindow *) window, FALSE); gtk_container_set_border_width ((GtkContainer *) window, 6); audgui_destroy_on_escape (window); GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) window, vbox); gtk_box_pack_start ((GtkBox *) vbox, create_on_off (), FALSE, FALSE, 0); GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); GtkWidget * preamp = create_slider (_("Preamp"), -1, hbox); g_object_set_data ((GObject *) window, "preamp", preamp); gtk_box_pack_start ((GtkBox *) hbox, gtk_separator_new (GTK_ORIENTATION_VERTICAL), FALSE, FALSE, 0); for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++) { GtkWidget * slider = create_slider (_(names[i]), i, hbox); SPRINTF (slider_id, "slider%d", i); g_object_set_data ((GObject *) window, slider_id, slider); } update_sliders (NULL, window); hook_associate ("set equalizer_preamp", (HookFunction) update_sliders, window); hook_associate ("set equalizer_bands", (HookFunction) update_sliders, window); g_signal_connect (window, "destroy", (GCallback) destroy_cb, NULL); return window; }
EXPORT void audgui_simple_message (GtkWidget * * widget, GtkMessageType type, const char * title, const char * text) { AUDDBG ("%s\n", text); if (* widget != NULL) { const char * old = NULL; g_object_get ((GObject *) * widget, "text", & old, NULL); g_return_if_fail (old); int messages = GPOINTER_TO_INT (g_object_get_data ((GObject *) * widget, "messages")); if (messages > 10) text = _("\n(Further messages have been hidden.)"); if (strstr (old, text)) goto CREATED; char both[strlen (old) + strlen (text) + 2]; snprintf (both, sizeof both, "%s\n%s", old, text); g_object_set ((GObject *) * widget, "text", both, NULL); g_object_set_data ((GObject *) * widget, "messages", GINT_TO_POINTER (messages + 1)); goto CREATED; } * widget = gtk_message_dialog_new (NULL, 0, type, GTK_BUTTONS_OK, "%s", text); gtk_window_set_title ((GtkWindow *) * widget, title); g_object_set_data ((GObject *) * widget, "messages", GINT_TO_POINTER (1)); g_signal_connect (* widget, "response", (GCallback) gtk_widget_destroy, NULL); audgui_destroy_on_escape (* widget); g_signal_connect (* widget, "destroy", (GCallback) gtk_widget_destroyed, widget); CREATED: gtk_window_present ((GtkWindow *) * widget); }
static void configure (void) { if (config_window == NULL) { GtkWidget *vbox, *hbox, *button; config_window = gtk_dialog_new_with_buttons (_("Bauer Stereophonic-to-Binaural Preferences"), NULL, 0, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); gtk_window_set_resizable ((GtkWindow *) config_window, FALSE); g_signal_connect (config_window, "destroy", (GCallback) gtk_widget_destroyed, & config_window); vbox = gtk_dialog_get_content_area ((GtkDialog *) config_window); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("Feed level:")), TRUE, FALSE, 0); feed_slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, BS2B_MINFEED, BS2B_MAXFEED, 1.0); gtk_range_set_value (GTK_RANGE(feed_slider), feed_level); gtk_widget_set_size_request (feed_slider, 200, -1); gtk_box_pack_start ((GtkBox *) hbox, feed_slider, FALSE, FALSE, 0); g_signal_connect (feed_slider, "value-changed", (GCallback) feed_value_changed, NULL); g_signal_connect (feed_slider, "format-value", (GCallback) feed_format_value, NULL); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new(_("Cut frequency:")), TRUE, FALSE, 0); fcut_slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, BS2B_MINFCUT, BS2B_MAXFCUT, 1.0); gtk_range_set_value (GTK_RANGE(fcut_slider), fcut_level); gtk_widget_set_size_request (fcut_slider, 200, -1); gtk_box_pack_start ((GtkBox *) hbox, fcut_slider, FALSE, FALSE, 0); g_signal_connect (fcut_slider, "value-changed", (GCallback) fcut_value_changed, NULL); g_signal_connect (fcut_slider, "format-value", (GCallback) fcut_format_value, NULL); 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_label_new(_("Presets:")), TRUE, FALSE, 0); button = preset_button(_("Default"), BS2B_DEFAULT_CLEVEL); gtk_box_pack_start ((GtkBox *) hbox, button, TRUE, FALSE, 0); button = preset_button("C. Moy", BS2B_CMOY_CLEVEL); gtk_box_pack_start ((GtkBox *) hbox, button, TRUE, FALSE, 0); button = preset_button("J. Meier", BS2B_JMEIER_CLEVEL); gtk_box_pack_start ((GtkBox *) hbox, button, TRUE, FALSE, 0); g_signal_connect (config_window, "response", (GCallback) gtk_widget_destroy, NULL); audgui_destroy_on_escape (config_window); gtk_widget_show_all (vbox); } gtk_window_present ((GtkWindow *) config_window); }
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); }
static void run_filebrowser_gtk2style(gboolean play_button, gboolean show) { static GtkWidget *window = NULL; GtkWidget *vbox, *hbox, *bbox; GtkWidget *chooser; GtkWidget *action_button, *close_button; GtkWidget *toggle; gchar *window_title, *toggle_text; gpointer action_stock, storage; if (!show) { if (window){ gtk_widget_hide(window); return; } else return; } else { if (window) { gtk_window_present(GTK_WINDOW(window)); /* raise filebrowser */ return; } } window_title = play_button ? _("Open Files") : _("Add Files"); toggle_text = play_button ? _("Close dialog on Open") : _("Close dialog on Add"); action_stock = play_button ? GTK_STOCK_OPEN : GTK_STOCK_ADD; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title(GTK_WINDOW(window), window_title); gtk_window_set_default_size(GTK_WINDOW(window), 700, 450); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_set_border_width(GTK_CONTAINER(window), 10); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), TRUE); gchar * path = aud_get_string ("audgui", "filesel_path"); if (path[0]) gtk_file_chooser_set_current_folder ((GtkFileChooser *) chooser, path); g_free (path); gtk_box_pack_start(GTK_BOX(vbox), chooser, TRUE, TRUE, 3); hbox = gtk_hbox_new(TRUE, 0); gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 3); toggle = gtk_check_button_new_with_label(toggle_text); gtk_toggle_button_set_active ((GtkToggleButton *) toggle, aud_get_bool ("audgui", "close_dialog_open")); gtk_box_pack_start(GTK_BOX(hbox), toggle, TRUE, TRUE, 3); bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(bbox), 6); gtk_box_pack_end(GTK_BOX(hbox), bbox, TRUE, TRUE, 3); close_button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); action_button = gtk_button_new_from_stock(action_stock); gtk_container_add(GTK_CONTAINER(bbox), close_button); gtk_container_add(GTK_CONTAINER(bbox), action_button); gtk_widget_set_can_default (action_button, TRUE); gtk_widget_grab_default (action_button); /* this storage object holds several other objects which are used in the * callback functions */ storage = g_object_new(G_TYPE_OBJECT, NULL); g_object_set_data(storage, "window", window); g_object_set_data(storage, "chooser", chooser); g_object_set_data(storage, "toggle-button", toggle); g_object_set_data(storage, "play-button", GINT_TO_POINTER(play_button)); g_signal_connect(chooser, "file-activated", G_CALLBACK(action_button_cb), storage); g_signal_connect(action_button, "clicked", G_CALLBACK(action_button_cb), storage); g_signal_connect(close_button, "clicked", G_CALLBACK(close_button_cb), window); g_signal_connect(window, "destroy", G_CALLBACK(gtk_widget_destroyed), &window); audgui_destroy_on_escape (window); gtk_widget_show_all (window); }
static GtkWidget * equalizerwin_create_list_window (Index * preset_list, const gchar *title, GtkWidget **window, GtkSelectionMode sel_mode, GtkWidget **entry, GtkWidget *button_action, GCallback action_func, GCallback select_row_func) { GtkWidget *vbox, *scrolled_window, *bbox, *view; GtkWidget *button_cancel; GtkListStore *store; GtkTreeIter iter; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; GtkTreeSortable *sortable; *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(*window), title); gtk_window_set_type_hint(GTK_WINDOW(*window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_default_size(GTK_WINDOW(*window), 350, 300); gtk_container_set_border_width(GTK_CONTAINER(*window), 10); gtk_window_set_transient_for(GTK_WINDOW(*window), GTK_WINDOW(equalizerwin)); g_signal_connect(*window, "destroy", G_CALLBACK(gtk_widget_destroyed), window); audgui_destroy_on_escape (* window); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); gtk_container_add(GTK_CONTAINER(*window), vbox); scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scrolled_window, GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); /* fill the store with the names of all available presets */ store = gtk_list_store_new(1, G_TYPE_STRING); for (int p = 0; p < index_count (preset_list); p ++) { EqualizerPreset * preset = index_get (preset_list, p); gtk_list_store_append(store, &iter); gtk_list_store_set (store, & iter, 0, preset->name, -1); } model = GTK_TREE_MODEL(store); sortable = GTK_TREE_SORTABLE(store); gtk_tree_sortable_set_sort_column_id(sortable, 0, GTK_SORT_ASCENDING); view = gtk_tree_view_new(); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), -1, _("Presets"), renderer, "text", 0, NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(view), model); g_object_unref(model); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); gtk_tree_selection_set_mode(selection, sel_mode); gtk_container_add(GTK_CONTAINER(scrolled_window), view); gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0); if (entry) { *entry = gtk_entry_new(); g_signal_connect(*entry, "activate", action_func, NULL); gtk_box_pack_start(GTK_BOX(vbox), *entry, FALSE, FALSE, 0); } bbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(bbox), 5); gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); button_cancel = audgui_button_new (_("Cancel"), "process-stop", NULL, NULL); g_signal_connect_swapped (button_cancel, "clicked", (GCallback) gtk_widget_destroy, * window); gtk_box_pack_start(GTK_BOX(bbox), button_cancel, TRUE, TRUE, 0); g_signal_connect(button_action, "clicked", G_CALLBACK(action_func), view); gtk_widget_set_can_default (button_action, TRUE); if (select_row_func) g_signal_connect(view, "row-activated", G_CALLBACK(select_row_func), NULL); gtk_box_pack_start(GTK_BOX(bbox), button_action, TRUE, TRUE, 0); gtk_widget_grab_default(button_action); gtk_widget_show_all(*window); return *window; }
static void resample_configure (void) { if (config_window == NULL) { GtkWidget * vbox, * hbox, * button; char scratch[16]; int count; config_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint ((GtkWindow *) config_window, GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_resizable ((GtkWindow *) config_window, FALSE); gtk_window_set_title ((GtkWindow *) config_window, _("Sample Rate " "Converter Preferences")); gtk_container_set_border_width ((GtkContainer *) config_window, 6); g_signal_connect (config_window, "destroy", (GCallback) gtk_widget_destroyed, & config_window); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) config_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_label_new (_("Rate " "mappings:")), FALSE, FALSE, 0); for (count = 0; count < n_common_rates; count ++) { hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); snprintf (scratch, sizeof scratch, "%d:", common_rates[count]); gtk_box_pack_start ((GtkBox *) hbox, gtk_label_new (scratch), FALSE, FALSE, 0); button = gtk_spin_button_new_with_range (8000, 192000, 50); gtk_box_pack_start ((GtkBox *) hbox, button, FALSE, FALSE, 0); gtk_spin_button_set_value ((GtkSpinButton *) button, converted_rates[count]); g_signal_connect (button, "value-changed", (GCallback) value_changed, & converted_rates[count]); } 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_label_new (_("All others:")), FALSE, FALSE, 0); button = gtk_spin_button_new_with_range (8000, 192000, 50); gtk_box_pack_start ((GtkBox *) hbox, button, FALSE, FALSE, 0); gtk_spin_button_set_value ((GtkSpinButton *) button, fallback_rate); g_signal_connect (button, "value-changed", (GCallback) value_changed, & fallback_rate); 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_label_new (_("Method:")), FALSE, FALSE, 0); gtk_box_pack_start ((GtkBox *) hbox, make_method_list (), FALSE, FALSE, 0); 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_CLOSE); gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); gtk_widget_set_can_default (button, TRUE); gtk_widget_grab_default (button); g_signal_connect_swapped (button, "clicked", (GCallback) gtk_widget_destroy, config_window); audgui_destroy_on_escape (config_window); gtk_widget_show_all (vbox); } gtk_window_present ((GtkWindow *) config_window); }