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, * vbox, * hbox; int i; 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); g_signal_connect ((GObject *) window, "delete-event", (GCallback) gtk_widget_hide_on_delete, NULL); audgui_hide_on_escape (window); 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); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); gtk_box_pack_start ((GtkBox *) hbox, create_slider (_("Preamp"), -1), FALSE, FALSE, 0); gtk_box_pack_start ((GtkBox *) hbox, gtk_separator_new (GTK_ORIENTATION_VERTICAL), FALSE, FALSE, 0); for (i = 0; i < AUD_EQUALIZER_NBANDS; i ++) gtk_box_pack_start ((GtkBox *) hbox, create_slider (_(names[i]), i), FALSE, FALSE, 0); gtk_widget_show_all (vbox); return window; }
void create_infowin (void) { GtkWidget * hbox; GtkWidget * hbox_status_and_bbox; GtkWidget * vbox0; GtkWidget * vbox2; GtkWidget * label_title; GtkWidget * label_artist; GtkWidget * label_album; GtkWidget * label_comment; GtkWidget * label_genre; GtkWidget * label_year; GtkWidget * label_track; GtkWidget * label_format; GtkWidget * label_quality_label; GtkWidget * label_bitrate_label; GtkWidget * codec_hbox; GtkWidget * codec_table; GtkWidget * table1; GtkWidget * bbox_close; GtkWidget * btn_close; GtkWidget * alignment; infowin = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width ((GtkContainer *) infowin, 6); gtk_window_set_title ((GtkWindow *) infowin, _("Track Information")); gtk_window_set_type_hint ((GtkWindow *) infowin, GDK_WINDOW_TYPE_HINT_DIALOG); vbox0 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add ((GtkContainer *) infowin, vbox0); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox0, hbox, TRUE, TRUE, 0); vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start ((GtkBox *) hbox, vbox2, TRUE, TRUE, 0); GtkWidget * vbox3 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start ((GtkBox *) vbox2, vbox3, TRUE, FALSE, 0); image_artwork = gtk_image_new (); gtk_box_pack_start ((GtkBox *) vbox3, image_artwork, FALSE, FALSE, 0); location_text = gtk_label_new (""); gtk_widget_set_size_request (location_text, 200, -1); gtk_label_set_line_wrap ((GtkLabel *) location_text, TRUE); gtk_label_set_line_wrap_mode ((GtkLabel *) location_text, PANGO_WRAP_WORD_CHAR); gtk_label_set_selectable ((GtkLabel *) location_text, TRUE); gtk_box_pack_start ((GtkBox *) vbox3, location_text, FALSE, FALSE, 0); codec_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) vbox2, codec_hbox, FALSE, FALSE, 0); codec_table = gtk_table_new(3, 2, FALSE); gtk_table_set_row_spacings ((GtkTable *) codec_table, 3); gtk_table_set_col_spacings ((GtkTable *) codec_table, 12); gtk_box_pack_start ((GtkBox *) codec_hbox, codec_table, FALSE, FALSE, 0); label_format = gtk_label_new (_("<span size=\"small\">Format:</span>")); gtk_label_set_use_markup ((GtkLabel *) label_format, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_format, 0, 0.5); label_quality_label = gtk_label_new (_("<span size=\"small\">Quality:</span>")); gtk_label_set_use_markup ((GtkLabel *) label_quality_label, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_quality_label, 0, 0.5); label_bitrate_label = gtk_label_new (_("<span size=\"small\">Bitrate:</span>")); gtk_label_set_use_markup ((GtkLabel *) label_bitrate_label, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_bitrate_label, 0, 0.5); label_format_name = gtk_label_new (_("<span size=\"small\">n/a</span>")); gtk_label_set_use_markup ((GtkLabel *) label_format_name, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_format_name, 0, 0.5); label_quality = gtk_label_new (_("<span size=\"small\">n/a</span>")); gtk_label_set_use_markup ((GtkLabel *) label_quality, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_quality, 0, 0.5); label_bitrate = gtk_label_new (_("<span size=\"small\">n/a</span>")); gtk_label_set_use_markup ((GtkLabel *) label_bitrate, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_bitrate, 0, 0.5); gtk_table_attach ((GtkTable *) codec_table, label_format, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ((GtkTable *) codec_table, label_format_name, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ((GtkTable *) codec_table, label_quality_label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ((GtkTable *) codec_table, label_quality, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ((GtkTable *) codec_table, label_bitrate_label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ((GtkTable *) codec_table, label_bitrate, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start ((GtkBox *) hbox, vbox2, TRUE, TRUE, 0); label_title = gtk_label_new (_("<span size=\"small\">Title</span>")); gtk_box_pack_start ((GtkBox *) vbox2, label_title, FALSE, FALSE, 0); gtk_label_set_use_markup ((GtkLabel *) label_title, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_title, 0, 0); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0); gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0); entry_title = gtk_entry_new (); gtk_container_add ((GtkContainer *) alignment, entry_title); g_signal_connect (entry_title, "changed", (GCallback) entry_changed, NULL); label_artist = gtk_label_new (_("<span size=\"small\">Artist</span>")); gtk_box_pack_start ((GtkBox *) vbox2, label_artist, FALSE, FALSE, 0); gtk_label_set_use_markup ((GtkLabel *) label_artist, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_artist, 0, 0.5); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0); gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0); entry_artist = gtk_entry_new (); gtk_container_add ((GtkContainer *) alignment, entry_artist); g_signal_connect (entry_artist, "changed", (GCallback) entry_changed, NULL); label_album = gtk_label_new (_("<span size=\"small\">Album</span>")); gtk_box_pack_start ((GtkBox *) vbox2, label_album, FALSE, FALSE, 0); gtk_label_set_use_markup ((GtkLabel *) label_album, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_album, 0, 0.5); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0); gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0); entry_album = gtk_entry_new (); gtk_container_add ((GtkContainer *) alignment, entry_album); g_signal_connect (entry_album, "changed", (GCallback) entry_changed, NULL); label_comment = gtk_label_new (_("<span size=\"small\">Comment</span>")); gtk_box_pack_start ((GtkBox *) vbox2, label_comment, FALSE, FALSE, 0); gtk_label_set_use_markup ((GtkLabel *) label_comment, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_comment, 0, 0.5); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0); gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0); entry_comment = gtk_entry_new (); gtk_container_add ((GtkContainer *) alignment, entry_comment); g_signal_connect (entry_comment, "changed", (GCallback) entry_changed, NULL); label_genre = gtk_label_new (_("<span size=\"small\">Genre</span>")); gtk_box_pack_start ((GtkBox *) vbox2, label_genre, FALSE, FALSE, 0); gtk_label_set_use_markup ((GtkLabel *) label_genre, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_genre, 0, 0.5); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0); gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0); entry_genre = gtk_combo_box_text_new_with_entry (); gtk_container_add ((GtkContainer *) alignment, entry_genre); g_signal_connect (entry_genre, "changed", (GCallback) entry_changed, NULL); g_idle_add ((GSourceFunc) genre_fill, entry_genre); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0); gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0); table1 = gtk_table_new (2, 2, FALSE); gtk_container_add ((GtkContainer *) alignment, table1); gtk_table_set_col_spacings ((GtkTable *) table1, 6); label_year = gtk_label_new (_("<span size=\"small\">Year</span>")); gtk_table_attach ((GtkTable *) table1, label_year, 0, 1, 0, 1, GTK_FILL, 0, 0, 0); gtk_label_set_use_markup ((GtkLabel *) label_year, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_year, 0, 0.5); entry_year = gtk_entry_new (); gtk_table_attach ((GtkTable *) table1, entry_year, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); g_signal_connect (entry_year, "changed", (GCallback) entry_changed, NULL); label_track = gtk_label_new (_("<span size=\"small\">Track Number</span>")); gtk_table_attach ((GtkTable *) table1, label_track, 1, 2, 0, 1, GTK_FILL, 0, 0, 0); gtk_label_set_use_markup ((GtkLabel *) label_track, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_track, 0, 0.5); entry_track = gtk_entry_new (); gtk_table_attach ((GtkTable *) table1, entry_track, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); g_signal_connect (entry_track, "changed", (GCallback) entry_changed, NULL); hbox_status_and_bbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start ((GtkBox *) vbox0, hbox_status_and_bbox, FALSE, FALSE, 0); label_mini_status = gtk_label_new ("<span size=\"small\"></span>"); gtk_label_set_use_markup ((GtkLabel *) label_mini_status, TRUE); gtk_misc_set_alignment ((GtkMisc *) label_mini_status, 0, 0.5); gtk_box_pack_start ((GtkBox *) hbox_status_and_bbox, label_mini_status, TRUE, TRUE, 0); bbox_close = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_set_spacing ((GtkBox *) bbox_close, 6); gtk_box_pack_start ((GtkBox *) hbox_status_and_bbox, bbox_close, FALSE, FALSE, 0); gtk_button_box_set_layout ((GtkButtonBox *) bbox_close, GTK_BUTTONBOX_END); btn_apply = gtk_button_new_from_stock (GTK_STOCK_SAVE); gtk_container_add ((GtkContainer *) bbox_close, btn_apply); g_signal_connect (btn_apply, "clicked", (GCallback) infowin_update_tuple, NULL); gtk_widget_set_sensitive (btn_apply, FALSE); btn_close = gtk_button_new_from_stock (GTK_STOCK_CLOSE); gtk_container_add ((GtkContainer *) bbox_close, btn_close); g_signal_connect_swapped (btn_close, "clicked", (GCallback) gtk_widget_hide, infowin); audgui_hide_on_delete (infowin); audgui_hide_on_escape (infowin); gtk_widget_show_all (vbox0); gtk_widget_grab_focus (entry_title); }
EXPORT void audgui_playlist_manager (void) { GtkWidget * playman_vbox; GtkWidget * playman_pl_lv, * playman_pl_lv_sw; GtkWidget * playman_button_hbox; GtkWidget * new_button, * delete_button, * rename_button, * play_button; GtkWidget * hbox, * check_button; GdkGeometry playman_win_hints; if (playman_win) { gtk_window_present ((GtkWindow *) playman_win); return; } 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); playman_win_hints.min_width = 400; playman_win_hints.min_height = 250; gtk_window_set_geometry_hints ((GtkWindow *) playman_win, playman_win, &playman_win_hints , GDK_HINT_MIN_SIZE); int x = aud_get_int ("audgui", "playlist_manager_x"); int y = aud_get_int ("audgui", "playlist_manager_y"); int w = aud_get_int ("audgui", "playlist_manager_w"); int h = aud_get_int ("audgui", "playlist_manager_h"); if (w && h) { gtk_window_move ((GtkWindow *) playman_win, x, y); gtk_window_set_default_size ((GtkWindow *) playman_win, w, h); } g_signal_connect (playman_win, "delete-event", (GCallback) hide_cb, NULL); audgui_hide_on_escape (playman_win); playman_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add ((GtkContainer *) playman_win, playman_vbox); /* ListView */ 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); 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 */ playman_button_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); new_button = gtk_button_new_from_stock (GTK_STOCK_NEW); delete_button = gtk_button_new_from_stock (GTK_STOCK_DELETE); rename_button = gtk_button_new_with_mnemonic (_("_Rename")); gtk_button_set_image ((GtkButton *) rename_button, gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON)); play_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY); 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); g_signal_connect (new_button, "clicked", (GCallback) new_cb, NULL); g_signal_connect (delete_button, "clicked", (GCallback) delete_cb, NULL); g_signal_connect (rename_button, "clicked", (GCallback) rename_cb, NULL); g_signal_connect (play_button, "clicked", (GCallback) play_cb, NULL); /* CheckButton */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start ((GtkBox *) playman_vbox, hbox, FALSE, FALSE, 0); 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); gtk_widget_show_all (playman_win); hook_associate ("config save", save_config_cb, playman_win); }