comparison src/audacious/ui_preferences.c @ 4148:aa9d33c28eef

separated audio category from the create_prefs_window() blob
author mf0102 <0102@gmx.at>
date Thu, 03 Jan 2008 14:40:27 +0100
parents f444f000ae00
children dc0c721a0d84
comparison
equal deleted inserted replaced
4147:f444f000ae00 4148:aa9d33c28eef
2041 G_CALLBACK(on_titlestring_cbox_changed), 2041 G_CALLBACK(on_titlestring_cbox_changed),
2042 titlestring_help_button); 2042 titlestring_help_button);
2043 g_signal_connect(titlestring_help_button, "clicked", 2043 g_signal_connect(titlestring_help_button, "clicked",
2044 G_CALLBACK(on_titlestring_help_button_clicked), 2044 G_CALLBACK(on_titlestring_help_button_clicked),
2045 titlestring_tag_menu); 2045 titlestring_tag_menu);
2046 }
2047
2048 static void
2049 create_audio_category(void)
2050 {
2051 GtkWidget *label96;
2052 GtkWidget *audio_scrolled_window;
2053 GtkWidget *audio_page_viewport;
2054 GtkWidget *audio_page_vbox;
2055 GtkWidget *alignment74;
2056 GtkWidget *label77;
2057 GtkWidget *alignment73;
2058 GtkWidget *vbox33;
2059 GtkWidget *table11;
2060 GtkWidget *image7;
2061 GtkWidget *label79;
2062 GtkWidget *label82;
2063 GtkObject *output_plugin_bufsize_adj;
2064 GtkWidget *output_plugin_bufsize;
2065 GtkWidget *output_plugin_cbox;
2066 GtkWidget *label78;
2067 GtkWidget *alignment82;
2068 GtkWidget *output_plugin_button_box;
2069 GtkWidget *output_plugin_prefs;
2070 GtkWidget *alignment76;
2071 GtkWidget *hbox7;
2072 GtkWidget *image5;
2073 GtkWidget *label80;
2074 GtkWidget *output_plugin_info;
2075 GtkWidget *alignment77;
2076 GtkWidget *hbox8;
2077 GtkWidget *image6;
2078 GtkWidget *label81;
2079 GtkWidget *alignment90;
2080 GtkWidget *label93;
2081 GtkWidget *alignment92;
2082 GtkWidget *enable_src;
2083 GtkWidget *alignment91;
2084 GtkWidget *vbox36;
2085 GtkWidget *table13;
2086 GtkWidget *src_converter_type;
2087 GtkWidget *label94;
2088 GtkWidget *label92;
2089 GtkWidget *image9;
2090 GtkObject *src_rate_adj;
2091 GtkWidget *src_rate;
2092 GtkWidget *label91;
2093 GtkWidget *alignment4;
2094 GtkWidget *label2;
2095 GtkWidget *alignment7;
2096 GtkWidget *software_volume_control;
2097 GtkWidget *empty_notebook_page;
2098
2099
2100 empty_notebook_page = gtk_vbox_new (FALSE, 0);
2101 gtk_container_add (GTK_CONTAINER (category_notebook), empty_notebook_page);
2102
2103 label96 = gtk_label_new ("");
2104 gtk_notebook_set_tab_label (GTK_NOTEBOOK (category_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (category_notebook), 6), label96);
2105
2106 audio_scrolled_window = gtk_scrolled_window_new (NULL, NULL);
2107 gtk_container_add (GTK_CONTAINER (empty_notebook_page), audio_scrolled_window);
2108 gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (category_notebook), audio_scrolled_window,
2109 TRUE, TRUE, GTK_PACK_START);
2110 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (audio_scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2111
2112 audio_page_viewport = gtk_viewport_new (NULL, NULL);
2113 gtk_container_add (GTK_CONTAINER (audio_scrolled_window), audio_page_viewport);
2114 gtk_widget_set_events (audio_page_viewport, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
2115 gtk_viewport_set_shadow_type (GTK_VIEWPORT (audio_page_viewport), GTK_SHADOW_NONE);
2116
2117 audio_page_vbox = gtk_vbox_new (FALSE, 0);
2118 gtk_container_add (GTK_CONTAINER (audio_page_viewport), audio_page_vbox);
2119
2120 alignment74 = gtk_alignment_new (0.5, 0.5, 1, 1);
2121 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment74, FALSE, FALSE, 0);
2122 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment74), 0, 12, 0, 0);
2123
2124 label77 = gtk_label_new (_("<b>Audio System</b>"));
2125 gtk_container_add (GTK_CONTAINER (alignment74), label77);
2126 gtk_label_set_use_markup (GTK_LABEL (label77), TRUE);
2127 gtk_misc_set_alignment (GTK_MISC (label77), 0, 0.5);
2128
2129 alignment73 = gtk_alignment_new (0.5, 0.5, 1, 1);
2130 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment73, FALSE, FALSE, 0);
2131 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment73), 0, 6, 12, 0);
2132
2133 vbox33 = gtk_vbox_new (FALSE, 0);
2134 gtk_container_add (GTK_CONTAINER (alignment73), vbox33);
2135
2136 table11 = gtk_table_new (3, 2, FALSE);
2137 gtk_box_pack_start (GTK_BOX (vbox33), table11, FALSE, FALSE, 0);
2138 gtk_table_set_row_spacings (GTK_TABLE (table11), 6);
2139 gtk_table_set_col_spacings (GTK_TABLE (table11), 6);
2140
2141 image7 = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_BUTTON);
2142 gtk_table_attach (GTK_TABLE (table11), image7, 0, 1, 2, 3,
2143 (GtkAttachOptions) (0),
2144 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
2145 gtk_misc_set_alignment (GTK_MISC (image7), 1, 0);
2146
2147 label79 = gtk_label_new (_("Buffer size:"));
2148 gtk_table_attach (GTK_TABLE (table11), label79, 0, 1, 1, 2,
2149 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2150 (GtkAttachOptions) (0), 0, 0);
2151 gtk_misc_set_alignment (GTK_MISC (label79), 1, 0.5);
2152
2153 label82 = gtk_label_new (_("<span size=\"small\">This is the amount of time to prebuffer audio streams by, in milliseconds.\nIncrease this value if you are experiencing audio skipping.\nPlease note however, that high values will result in Audacious performing poorly.</span>"));
2154 gtk_table_attach (GTK_TABLE (table11), label82, 1, 2, 2, 3,
2155 (GtkAttachOptions) (0),
2156 (GtkAttachOptions) (0), 0, 0);
2157 gtk_label_set_use_markup (GTK_LABEL (label82), TRUE);
2158 gtk_label_set_line_wrap (GTK_LABEL (label82), TRUE);
2159 gtk_misc_set_alignment (GTK_MISC (label82), 0, 0.5);
2160
2161 output_plugin_bufsize_adj = gtk_adjustment_new (0, 0, 600000, 100, 1000, 1000);
2162 output_plugin_bufsize = gtk_spin_button_new (GTK_ADJUSTMENT (output_plugin_bufsize_adj), 1, 0);
2163 gtk_table_attach (GTK_TABLE (table11), output_plugin_bufsize, 1, 2, 1, 2,
2164 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2165 (GtkAttachOptions) (0), 0, 0);
2166
2167 output_plugin_cbox = gtk_combo_box_new_text ();
2168 gtk_table_attach (GTK_TABLE (table11), output_plugin_cbox, 1, 2, 0, 1,
2169 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2170 (GtkAttachOptions) (0), 0, 0);
2171
2172 label78 = gtk_label_new (_("Current output plugin:"));
2173 gtk_table_attach (GTK_TABLE (table11), label78, 0, 1, 0, 1,
2174 (GtkAttachOptions) (0),
2175 (GtkAttachOptions) (0), 0, 0);
2176 gtk_misc_set_alignment (GTK_MISC (label78), 0, 0.5);
2177
2178 alignment82 = gtk_alignment_new (0.5, 0.5, 1, 1);
2179 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment82, FALSE, FALSE, 0);
2180 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment82), 0, 0, 12, 0);
2181
2182 output_plugin_button_box = gtk_hbutton_box_new ();
2183 gtk_container_add (GTK_CONTAINER (alignment82), output_plugin_button_box);
2184 gtk_button_box_set_layout (GTK_BUTTON_BOX (output_plugin_button_box), GTK_BUTTONBOX_START);
2185 gtk_box_set_spacing (GTK_BOX (output_plugin_button_box), 8);
2186
2187 output_plugin_prefs = gtk_button_new ();
2188 gtk_container_add (GTK_CONTAINER (output_plugin_button_box), output_plugin_prefs);
2189 gtk_widget_set_sensitive (output_plugin_prefs, FALSE);
2190 GTK_WIDGET_SET_FLAGS (output_plugin_prefs, GTK_CAN_DEFAULT);
2191
2192 alignment76 = gtk_alignment_new (0.5, 0.5, 0, 0);
2193 gtk_container_add (GTK_CONTAINER (output_plugin_prefs), alignment76);
2194
2195 hbox7 = gtk_hbox_new (FALSE, 2);
2196 gtk_container_add (GTK_CONTAINER (alignment76), hbox7);
2197
2198 image5 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_BUTTON);
2199 gtk_box_pack_start (GTK_BOX (hbox7), image5, FALSE, FALSE, 0);
2200
2201 label80 = gtk_label_new_with_mnemonic (_("Output Plugin Preferences"));
2202 gtk_box_pack_start (GTK_BOX (hbox7), label80, FALSE, FALSE, 0);
2203
2204 output_plugin_info = gtk_button_new ();
2205 gtk_container_add (GTK_CONTAINER (output_plugin_button_box), output_plugin_info);
2206 gtk_widget_set_sensitive (output_plugin_info, FALSE);
2207 GTK_WIDGET_SET_FLAGS (output_plugin_info, GTK_CAN_DEFAULT);
2208
2209 alignment77 = gtk_alignment_new (0.5, 0.5, 0, 0);
2210 gtk_container_add (GTK_CONTAINER (output_plugin_info), alignment77);
2211
2212 hbox8 = gtk_hbox_new (FALSE, 2);
2213 gtk_container_add (GTK_CONTAINER (alignment77), hbox8);
2214
2215 image6 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_BUTTON);
2216 gtk_box_pack_start (GTK_BOX (hbox8), image6, FALSE, FALSE, 0);
2217
2218 label81 = gtk_label_new_with_mnemonic (_("Output Plugin Information"));
2219 gtk_box_pack_start (GTK_BOX (hbox8), label81, FALSE, FALSE, 0);
2220
2221 create_widgets(GTK_BOX(audio_page_vbox), audio_page_widgets, G_N_ELEMENTS(audio_page_widgets));
2222
2223 alignment90 = gtk_alignment_new (0.5, 0.5, 1, 1);
2224 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment90, FALSE, FALSE, 0);
2225 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment90), 12, 12, 0, 0);
2226
2227 label93 = gtk_label_new (_("<b>Sampling Rate Converter</b>"));
2228 gtk_container_add (GTK_CONTAINER (alignment90), label93);
2229 gtk_label_set_use_markup (GTK_LABEL (label93), TRUE);
2230 gtk_misc_set_alignment (GTK_MISC (label93), 0, 0.5);
2231
2232 alignment92 = gtk_alignment_new (0.5, 0.5, 1, 1);
2233 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment92, FALSE, FALSE, 0);
2234 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment92), 0, 0, 12, 0);
2235
2236 enable_src = gtk_check_button_new_with_mnemonic (_("Enable Sampling Rate Converter"));
2237 gtk_container_add (GTK_CONTAINER (alignment92), enable_src);
2238 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_src), TRUE);
2239
2240 alignment91 = gtk_alignment_new (0.5, 0.5, 1, 1);
2241 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment91, FALSE, FALSE, 0);
2242 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment91), 0, 6, 12, 0);
2243
2244 vbox36 = gtk_vbox_new (FALSE, 0);
2245 gtk_container_add (GTK_CONTAINER (alignment91), vbox36);
2246
2247 table13 = gtk_table_new (3, 2, FALSE);
2248 gtk_box_pack_start (GTK_BOX (vbox36), table13, FALSE, FALSE, 0);
2249 gtk_table_set_row_spacings (GTK_TABLE (table13), 6);
2250 gtk_table_set_col_spacings (GTK_TABLE (table13), 6);
2251
2252 src_converter_type = gtk_combo_box_new_text ();
2253 gtk_table_attach (GTK_TABLE (table13), src_converter_type, 1, 2, 1, 2,
2254 (GtkAttachOptions) (0),
2255 (GtkAttachOptions) (0), 0, 0);
2256 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Best Sinc Interpolation"));
2257 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Medium Sinc Interpolation"));
2258 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Fastest Sinc Interpolation"));
2259 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("ZOH Interpolation"));
2260 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Linear Interpolation"));
2261
2262 label94 = gtk_label_new (_("Interpolation Engine:"));
2263 gtk_table_attach (GTK_TABLE (table13), label94, 0, 1, 1, 2,
2264 (GtkAttachOptions) (0),
2265 (GtkAttachOptions) (0), 0, 0);
2266 gtk_misc_set_alignment (GTK_MISC (label94), 0, 0.5);
2267
2268 label92 = gtk_label_new (_("<span size=\"small\">All streams will be converted to this sampling rate.\nThis should be the max supported sampling rate of\nthe sound card or output plugin.</span>"));
2269 gtk_table_attach (GTK_TABLE (table13), label92, 1, 2, 2, 3,
2270 (GtkAttachOptions) (0),
2271 (GtkAttachOptions) (0), 0, 0);
2272 gtk_label_set_use_markup (GTK_LABEL (label92), TRUE);
2273 gtk_label_set_line_wrap (GTK_LABEL (label92), TRUE);
2274 gtk_misc_set_alignment (GTK_MISC (label92), 0, 0.5);
2275
2276 image9 = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_BUTTON);
2277 gtk_table_attach (GTK_TABLE (table13), image9, 0, 1, 2, 3,
2278 (GtkAttachOptions) (0),
2279 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
2280 gtk_misc_set_alignment (GTK_MISC (image9), 1, 0);
2281
2282 src_rate_adj = gtk_adjustment_new (96000, 1000, 768000, 1000, 1000, 1000);
2283 src_rate = gtk_spin_button_new (GTK_ADJUSTMENT (src_rate_adj), 1, 0);
2284 gtk_table_attach (GTK_TABLE (table13), src_rate, 1, 2, 0, 1,
2285 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2286 (GtkAttachOptions) (0), 0, 0);
2287
2288 label91 = gtk_label_new (_("Sampling Rate [Hz]:"));
2289 gtk_table_attach (GTK_TABLE (table13), label91, 0, 1, 0, 1,
2290 (GtkAttachOptions) (0),
2291 (GtkAttachOptions) (0), 0, 0);
2292 gtk_misc_set_alignment (GTK_MISC (label91), 0, 0.5);
2293
2294 alignment4 = gtk_alignment_new (0.5, 0.5, 1, 1);
2295 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment4, FALSE, FALSE, 0);
2296 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment4), 12, 12, 0, 0);
2297
2298 label2 = gtk_label_new (_("<b>Volume Control</b>"));
2299 gtk_container_add (GTK_CONTAINER (alignment4), label2);
2300 gtk_label_set_use_markup (GTK_LABEL (label2), TRUE);
2301 gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5);
2302
2303 alignment7 = gtk_alignment_new (0.5, 0.5, 1, 1);
2304 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment7, FALSE, FALSE, 0);
2305 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment7), 0, 0, 12, 0);
2306
2307 software_volume_control = gtk_check_button_new_with_mnemonic (_("Use software volume control"));
2308 gtk_container_add (GTK_CONTAINER (alignment7), software_volume_control);
2309 gtk_tooltips_set_tip (tooltips, software_volume_control, _("Use software volume control. This may be useful for situations where your audio system does not support controlling the playback volume."), NULL);
2310
2311
2312 g_signal_connect(G_OBJECT(output_plugin_bufsize), "value_changed",
2313 G_CALLBACK(on_output_plugin_bufsize_value_changed),
2314 NULL);
2315 g_signal_connect_after(G_OBJECT(output_plugin_bufsize), "realize",
2316 G_CALLBACK(on_output_plugin_bufsize_realize),
2317 NULL);
2318 g_signal_connect_after(G_OBJECT(output_plugin_cbox), "realize",
2319 G_CALLBACK(on_output_plugin_cbox_realize),
2320 NULL);
2321 g_signal_connect(G_OBJECT(enable_src), "toggled",
2322 G_CALLBACK(on_enable_src_toggled),
2323 NULL);
2324 g_signal_connect(G_OBJECT(enable_src), "realize",
2325 G_CALLBACK(on_enable_src_realize),
2326 NULL);
2327 g_signal_connect(G_OBJECT(src_converter_type), "changed",
2328 G_CALLBACK(on_src_converter_type_changed),
2329 NULL);
2330 g_signal_connect_after(G_OBJECT(src_converter_type), "realize",
2331 G_CALLBACK(on_src_converter_type_realize),
2332 NULL);
2333 g_signal_connect(G_OBJECT(src_rate), "value_changed",
2334 G_CALLBACK(on_src_rate_value_changed),
2335 NULL);
2336 g_signal_connect(G_OBJECT(src_rate), "realize",
2337 G_CALLBACK(on_src_rate_realize),
2338 NULL);
2339 g_signal_connect(G_OBJECT(software_volume_control), "toggled",
2340 G_CALLBACK(on_software_volume_control_toggled),
2341 NULL);
2342 g_signal_connect(G_OBJECT(software_volume_control), "realize",
2343 G_CALLBACK(on_software_volume_control_realize),
2344 NULL);
2345
2346 /* plugin->output page */
2347
2348 g_signal_connect(G_OBJECT(output_plugin_cbox), "changed",
2349 G_CALLBACK(output_plugin_enable_prefs),
2350 output_plugin_prefs);
2351 g_signal_connect_swapped(G_OBJECT(output_plugin_prefs), "clicked",
2352 G_CALLBACK(output_plugin_open_prefs),
2353 output_plugin_cbox);
2354
2355 g_signal_connect(G_OBJECT(output_plugin_cbox), "changed",
2356 G_CALLBACK(output_plugin_enable_info),
2357 output_plugin_info);
2358 g_signal_connect_swapped(G_OBJECT(output_plugin_info), "clicked",
2359 G_CALLBACK(output_plugin_open_info),
2360 output_plugin_cbox);
2361
2046 } 2362 }
2047 2363
2048 void 2364 void
2049 create_prefs_window(void) 2365 create_prefs_window(void)
2050 { 2366 {
2116 GtkWidget *alignment72; 2432 GtkWidget *alignment72;
2117 GtkWidget *hbox6; 2433 GtkWidget *hbox6;
2118 GtkWidget *image4; 2434 GtkWidget *image4;
2119 GtkWidget *label75; 2435 GtkWidget *label75;
2120 GtkWidget *label95; 2436 GtkWidget *label95;
2121 GtkWidget *empty_notebook_page;
2122 GtkWidget *label96;
2123 GtkWidget *audio_scrolled_window;
2124 GtkWidget *audio_page_viewport;
2125 GtkWidget *audio_page_vbox;
2126 GtkWidget *alignment74;
2127 GtkWidget *label77;
2128 GtkWidget *alignment73;
2129 GtkWidget *vbox33;
2130 GtkWidget *table11;
2131 GtkWidget *image7;
2132 GtkWidget *label79;
2133 GtkWidget *label82;
2134 GtkObject *output_plugin_bufsize_adj;
2135 GtkWidget *output_plugin_bufsize;
2136 GtkWidget *output_plugin_cbox;
2137 GtkWidget *label78;
2138 GtkWidget *alignment82;
2139 GtkWidget *output_plugin_button_box;
2140 GtkWidget *output_plugin_prefs;
2141 GtkWidget *alignment76;
2142 GtkWidget *hbox7;
2143 GtkWidget *image5;
2144 GtkWidget *label80;
2145 GtkWidget *output_plugin_info;
2146 GtkWidget *alignment77;
2147 GtkWidget *hbox8;
2148 GtkWidget *image6;
2149 GtkWidget *label81;
2150 GtkWidget *alignment90;
2151 GtkWidget *label93;
2152 GtkWidget *alignment92;
2153 GtkWidget *enable_src;
2154 GtkWidget *alignment91;
2155 GtkWidget *vbox36;
2156 GtkWidget *table13;
2157 GtkWidget *src_converter_type;
2158 GtkWidget *label94;
2159 GtkWidget *label92;
2160 GtkWidget *image9;
2161 GtkObject *src_rate_adj;
2162 GtkWidget *src_rate;
2163 GtkWidget *label91;
2164 GtkWidget *alignment4;
2165 GtkWidget *label2;
2166 GtkWidget *alignment7;
2167 GtkWidget *software_volume_control;
2168 GtkWidget *hseparator1; 2437 GtkWidget *hseparator1;
2169 GtkWidget *hbox4; 2438 GtkWidget *hbox4;
2170 GtkWidget *audversionlabel; 2439 GtkWidget *audversionlabel;
2171 GtkWidget *prefswin_button_box; 2440 GtkWidget *prefswin_button_box;
2172 GtkWidget *reload_plugins; 2441 GtkWidget *reload_plugins;
2173 GtkWidget *alignment93; 2442 GtkWidget *alignment93;
2174 GtkWidget *hbox11; 2443 GtkWidget *hbox11;
2175 GtkWidget *image10; 2444 GtkWidget *image10;
2176 GtkWidget *label102; 2445 GtkWidget *label102;
2177 GtkWidget *close; 2446 GtkWidget *close;
2447 GtkWidget *empty_notebook_page;
2178 GtkAccelGroup *accel_group; 2448 GtkAccelGroup *accel_group;
2179 2449
2180 tooltips = gtk_tooltips_new (); 2450 tooltips = gtk_tooltips_new ();
2181 2451
2182 accel_group = gtk_accel_group_new (); 2452 accel_group = gtk_accel_group_new ();
2505 gtk_label_set_use_markup (GTK_LABEL (label75), TRUE); 2775 gtk_label_set_use_markup (GTK_LABEL (label75), TRUE);
2506 2776
2507 label95 = gtk_label_new (""); 2777 label95 = gtk_label_new ("");
2508 gtk_notebook_set_tab_label (GTK_NOTEBOOK (category_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (category_notebook), 5), label95); 2778 gtk_notebook_set_tab_label (GTK_NOTEBOOK (category_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (category_notebook), 5), label95);
2509 2779
2510 empty_notebook_page = gtk_vbox_new (FALSE, 0); 2780
2511 gtk_container_add (GTK_CONTAINER (category_notebook), empty_notebook_page); 2781
2512 2782 create_audio_category();
2513 label96 = gtk_label_new (""); 2783
2514 gtk_notebook_set_tab_label (GTK_NOTEBOOK (category_notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (category_notebook), 6), label96); 2784
2515
2516 audio_scrolled_window = gtk_scrolled_window_new (NULL, NULL);
2517 gtk_container_add (GTK_CONTAINER (empty_notebook_page), audio_scrolled_window);
2518 gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (category_notebook), audio_scrolled_window,
2519 TRUE, TRUE, GTK_PACK_START);
2520 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (audio_scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2521
2522 audio_page_viewport = gtk_viewport_new (NULL, NULL);
2523 gtk_container_add (GTK_CONTAINER (audio_scrolled_window), audio_page_viewport);
2524 gtk_widget_set_events (audio_page_viewport, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
2525 gtk_viewport_set_shadow_type (GTK_VIEWPORT (audio_page_viewport), GTK_SHADOW_NONE);
2526
2527 audio_page_vbox = gtk_vbox_new (FALSE, 0);
2528 gtk_container_add (GTK_CONTAINER (audio_page_viewport), audio_page_vbox);
2529
2530 alignment74 = gtk_alignment_new (0.5, 0.5, 1, 1);
2531 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment74, FALSE, FALSE, 0);
2532 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment74), 0, 12, 0, 0);
2533
2534 label77 = gtk_label_new (_("<b>Audio System</b>"));
2535 gtk_container_add (GTK_CONTAINER (alignment74), label77);
2536 gtk_label_set_use_markup (GTK_LABEL (label77), TRUE);
2537 gtk_misc_set_alignment (GTK_MISC (label77), 0, 0.5);
2538
2539 alignment73 = gtk_alignment_new (0.5, 0.5, 1, 1);
2540 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment73, FALSE, FALSE, 0);
2541 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment73), 0, 6, 12, 0);
2542
2543 vbox33 = gtk_vbox_new (FALSE, 0);
2544 gtk_container_add (GTK_CONTAINER (alignment73), vbox33);
2545
2546 table11 = gtk_table_new (3, 2, FALSE);
2547 gtk_box_pack_start (GTK_BOX (vbox33), table11, FALSE, FALSE, 0);
2548 gtk_table_set_row_spacings (GTK_TABLE (table11), 6);
2549 gtk_table_set_col_spacings (GTK_TABLE (table11), 6);
2550
2551 image7 = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_BUTTON);
2552 gtk_table_attach (GTK_TABLE (table11), image7, 0, 1, 2, 3,
2553 (GtkAttachOptions) (0),
2554 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
2555 gtk_misc_set_alignment (GTK_MISC (image7), 1, 0);
2556
2557 label79 = gtk_label_new (_("Buffer size:"));
2558 gtk_table_attach (GTK_TABLE (table11), label79, 0, 1, 1, 2,
2559 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2560 (GtkAttachOptions) (0), 0, 0);
2561 gtk_misc_set_alignment (GTK_MISC (label79), 1, 0.5);
2562
2563 label82 = gtk_label_new (_("<span size=\"small\">This is the amount of time to prebuffer audio streams by, in milliseconds.\nIncrease this value if you are experiencing audio skipping.\nPlease note however, that high values will result in Audacious performing poorly.</span>"));
2564 gtk_table_attach (GTK_TABLE (table11), label82, 1, 2, 2, 3,
2565 (GtkAttachOptions) (0),
2566 (GtkAttachOptions) (0), 0, 0);
2567 gtk_label_set_use_markup (GTK_LABEL (label82), TRUE);
2568 gtk_label_set_line_wrap (GTK_LABEL (label82), TRUE);
2569 gtk_misc_set_alignment (GTK_MISC (label82), 0, 0.5);
2570
2571 output_plugin_bufsize_adj = gtk_adjustment_new (0, 0, 600000, 100, 1000, 1000);
2572 output_plugin_bufsize = gtk_spin_button_new (GTK_ADJUSTMENT (output_plugin_bufsize_adj), 1, 0);
2573 gtk_table_attach (GTK_TABLE (table11), output_plugin_bufsize, 1, 2, 1, 2,
2574 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2575 (GtkAttachOptions) (0), 0, 0);
2576
2577 output_plugin_cbox = gtk_combo_box_new_text ();
2578 gtk_table_attach (GTK_TABLE (table11), output_plugin_cbox, 1, 2, 0, 1,
2579 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2580 (GtkAttachOptions) (0), 0, 0);
2581
2582 label78 = gtk_label_new (_("Current output plugin:"));
2583 gtk_table_attach (GTK_TABLE (table11), label78, 0, 1, 0, 1,
2584 (GtkAttachOptions) (0),
2585 (GtkAttachOptions) (0), 0, 0);
2586 gtk_misc_set_alignment (GTK_MISC (label78), 0, 0.5);
2587
2588 alignment82 = gtk_alignment_new (0.5, 0.5, 1, 1);
2589 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment82, FALSE, FALSE, 0);
2590 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment82), 0, 0, 12, 0);
2591
2592 output_plugin_button_box = gtk_hbutton_box_new ();
2593 gtk_container_add (GTK_CONTAINER (alignment82), output_plugin_button_box);
2594 gtk_button_box_set_layout (GTK_BUTTON_BOX (output_plugin_button_box), GTK_BUTTONBOX_START);
2595 gtk_box_set_spacing (GTK_BOX (output_plugin_button_box), 8);
2596
2597 output_plugin_prefs = gtk_button_new ();
2598 gtk_container_add (GTK_CONTAINER (output_plugin_button_box), output_plugin_prefs);
2599 gtk_widget_set_sensitive (output_plugin_prefs, FALSE);
2600 GTK_WIDGET_SET_FLAGS (output_plugin_prefs, GTK_CAN_DEFAULT);
2601
2602 alignment76 = gtk_alignment_new (0.5, 0.5, 0, 0);
2603 gtk_container_add (GTK_CONTAINER (output_plugin_prefs), alignment76);
2604
2605 hbox7 = gtk_hbox_new (FALSE, 2);
2606 gtk_container_add (GTK_CONTAINER (alignment76), hbox7);
2607
2608 image5 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_BUTTON);
2609 gtk_box_pack_start (GTK_BOX (hbox7), image5, FALSE, FALSE, 0);
2610
2611 label80 = gtk_label_new_with_mnemonic (_("Output Plugin Preferences"));
2612 gtk_box_pack_start (GTK_BOX (hbox7), label80, FALSE, FALSE, 0);
2613
2614 output_plugin_info = gtk_button_new ();
2615 gtk_container_add (GTK_CONTAINER (output_plugin_button_box), output_plugin_info);
2616 gtk_widget_set_sensitive (output_plugin_info, FALSE);
2617 GTK_WIDGET_SET_FLAGS (output_plugin_info, GTK_CAN_DEFAULT);
2618
2619 alignment77 = gtk_alignment_new (0.5, 0.5, 0, 0);
2620 gtk_container_add (GTK_CONTAINER (output_plugin_info), alignment77);
2621
2622 hbox8 = gtk_hbox_new (FALSE, 2);
2623 gtk_container_add (GTK_CONTAINER (alignment77), hbox8);
2624
2625 image6 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_BUTTON);
2626 gtk_box_pack_start (GTK_BOX (hbox8), image6, FALSE, FALSE, 0);
2627
2628 label81 = gtk_label_new_with_mnemonic (_("Output Plugin Information"));
2629 gtk_box_pack_start (GTK_BOX (hbox8), label81, FALSE, FALSE, 0);
2630
2631 create_widgets(GTK_BOX(audio_page_vbox), audio_page_widgets, G_N_ELEMENTS(audio_page_widgets));
2632
2633 alignment90 = gtk_alignment_new (0.5, 0.5, 1, 1);
2634 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment90, FALSE, FALSE, 0);
2635 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment90), 12, 12, 0, 0);
2636
2637 label93 = gtk_label_new (_("<b>Sampling Rate Converter</b>"));
2638 gtk_container_add (GTK_CONTAINER (alignment90), label93);
2639 gtk_label_set_use_markup (GTK_LABEL (label93), TRUE);
2640 gtk_misc_set_alignment (GTK_MISC (label93), 0, 0.5);
2641
2642 alignment92 = gtk_alignment_new (0.5, 0.5, 1, 1);
2643 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment92, FALSE, FALSE, 0);
2644 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment92), 0, 0, 12, 0);
2645
2646 enable_src = gtk_check_button_new_with_mnemonic (_("Enable Sampling Rate Converter"));
2647 gtk_container_add (GTK_CONTAINER (alignment92), enable_src);
2648 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_src), TRUE);
2649
2650 alignment91 = gtk_alignment_new (0.5, 0.5, 1, 1);
2651 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment91, FALSE, FALSE, 0);
2652 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment91), 0, 6, 12, 0);
2653
2654 vbox36 = gtk_vbox_new (FALSE, 0);
2655 gtk_container_add (GTK_CONTAINER (alignment91), vbox36);
2656
2657 table13 = gtk_table_new (3, 2, FALSE);
2658 gtk_box_pack_start (GTK_BOX (vbox36), table13, FALSE, FALSE, 0);
2659 gtk_table_set_row_spacings (GTK_TABLE (table13), 6);
2660 gtk_table_set_col_spacings (GTK_TABLE (table13), 6);
2661
2662 src_converter_type = gtk_combo_box_new_text ();
2663 gtk_table_attach (GTK_TABLE (table13), src_converter_type, 1, 2, 1, 2,
2664 (GtkAttachOptions) (0),
2665 (GtkAttachOptions) (0), 0, 0);
2666 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Best Sinc Interpolation"));
2667 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Medium Sinc Interpolation"));
2668 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Fastest Sinc Interpolation"));
2669 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("ZOH Interpolation"));
2670 gtk_combo_box_append_text (GTK_COMBO_BOX (src_converter_type), _("Linear Interpolation"));
2671
2672 label94 = gtk_label_new (_("Interpolation Engine:"));
2673 gtk_table_attach (GTK_TABLE (table13), label94, 0, 1, 1, 2,
2674 (GtkAttachOptions) (0),
2675 (GtkAttachOptions) (0), 0, 0);
2676 gtk_misc_set_alignment (GTK_MISC (label94), 0, 0.5);
2677
2678 label92 = gtk_label_new (_("<span size=\"small\">All streams will be converted to this sampling rate.\nThis should be the max supported sampling rate of\nthe sound card or output plugin.</span>"));
2679 gtk_table_attach (GTK_TABLE (table13), label92, 1, 2, 2, 3,
2680 (GtkAttachOptions) (0),
2681 (GtkAttachOptions) (0), 0, 0);
2682 gtk_label_set_use_markup (GTK_LABEL (label92), TRUE);
2683 gtk_label_set_line_wrap (GTK_LABEL (label92), TRUE);
2684 gtk_misc_set_alignment (GTK_MISC (label92), 0, 0.5);
2685
2686 image9 = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_BUTTON);
2687 gtk_table_attach (GTK_TABLE (table13), image9, 0, 1, 2, 3,
2688 (GtkAttachOptions) (0),
2689 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
2690 gtk_misc_set_alignment (GTK_MISC (image9), 1, 0);
2691
2692 src_rate_adj = gtk_adjustment_new (96000, 1000, 768000, 1000, 1000, 1000);
2693 src_rate = gtk_spin_button_new (GTK_ADJUSTMENT (src_rate_adj), 1, 0);
2694 gtk_table_attach (GTK_TABLE (table13), src_rate, 1, 2, 0, 1,
2695 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
2696 (GtkAttachOptions) (0), 0, 0);
2697
2698 label91 = gtk_label_new (_("Sampling Rate [Hz]:"));
2699 gtk_table_attach (GTK_TABLE (table13), label91, 0, 1, 0, 1,
2700 (GtkAttachOptions) (0),
2701 (GtkAttachOptions) (0), 0, 0);
2702 gtk_misc_set_alignment (GTK_MISC (label91), 0, 0.5);
2703
2704 alignment4 = gtk_alignment_new (0.5, 0.5, 1, 1);
2705 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment4, FALSE, FALSE, 0);
2706 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment4), 12, 12, 0, 0);
2707
2708 label2 = gtk_label_new (_("<b>Volume Control</b>"));
2709 gtk_container_add (GTK_CONTAINER (alignment4), label2);
2710 gtk_label_set_use_markup (GTK_LABEL (label2), TRUE);
2711 gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5);
2712
2713 alignment7 = gtk_alignment_new (0.5, 0.5, 1, 1);
2714 gtk_box_pack_start (GTK_BOX (audio_page_vbox), alignment7, FALSE, FALSE, 0);
2715 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment7), 0, 0, 12, 0);
2716
2717 software_volume_control = gtk_check_button_new_with_mnemonic (_("Use software volume control"));
2718 gtk_container_add (GTK_CONTAINER (alignment7), software_volume_control);
2719 gtk_tooltips_set_tip (tooltips, software_volume_control, _("Use software volume control. This may be useful for situations where your audio system does not support controlling the playback volume."), NULL);
2720 2785
2721 empty_notebook_page = gtk_vbox_new (FALSE, 0); 2786 empty_notebook_page = gtk_vbox_new (FALSE, 0);
2722 gtk_container_add (GTK_CONTAINER (category_notebook), empty_notebook_page); 2787 gtk_container_add (GTK_CONTAINER (category_notebook), empty_notebook_page);
2723 2788
2724 hseparator1 = gtk_hseparator_new (); 2789 hseparator1 = gtk_hseparator_new ();
2832 G_CALLBACK(on_proxy_entry_changed), 2897 G_CALLBACK(on_proxy_entry_changed),
2833 "proxy_user"); 2898 "proxy_user");
2834 g_signal_connect(G_OBJECT(proxy_user), "realize", 2899 g_signal_connect(G_OBJECT(proxy_user), "realize",
2835 G_CALLBACK(on_proxy_entry_realize), 2900 G_CALLBACK(on_proxy_entry_realize),
2836 "proxy_user"); 2901 "proxy_user");
2837 g_signal_connect(G_OBJECT(output_plugin_bufsize), "value_changed",
2838 G_CALLBACK(on_output_plugin_bufsize_value_changed),
2839 NULL);
2840 g_signal_connect_after(G_OBJECT(output_plugin_bufsize), "realize",
2841 G_CALLBACK(on_output_plugin_bufsize_realize),
2842 NULL);
2843 g_signal_connect_after(G_OBJECT(output_plugin_cbox), "realize",
2844 G_CALLBACK(on_output_plugin_cbox_realize),
2845 NULL);
2846 g_signal_connect(G_OBJECT(enable_src), "toggled",
2847 G_CALLBACK(on_enable_src_toggled),
2848 NULL);
2849 g_signal_connect(G_OBJECT(enable_src), "realize",
2850 G_CALLBACK(on_enable_src_realize),
2851 NULL);
2852 g_signal_connect(G_OBJECT(src_converter_type), "changed",
2853 G_CALLBACK(on_src_converter_type_changed),
2854 NULL);
2855 g_signal_connect_after(G_OBJECT(src_converter_type), "realize",
2856 G_CALLBACK(on_src_converter_type_realize),
2857 NULL);
2858 g_signal_connect(G_OBJECT(src_rate), "value_changed",
2859 G_CALLBACK(on_src_rate_value_changed),
2860 NULL);
2861 g_signal_connect(G_OBJECT(src_rate), "realize",
2862 G_CALLBACK(on_src_rate_realize),
2863 NULL);
2864 g_signal_connect(G_OBJECT(software_volume_control), "toggled",
2865 G_CALLBACK(on_software_volume_control_toggled),
2866 NULL);
2867 g_signal_connect(G_OBJECT(software_volume_control), "realize",
2868 G_CALLBACK(on_software_volume_control_realize),
2869 NULL);
2870 g_signal_connect(G_OBJECT(reload_plugins), "clicked", 2902 g_signal_connect(G_OBJECT(reload_plugins), "clicked",
2871 G_CALLBACK(on_reload_plugins_clicked), 2903 G_CALLBACK(on_reload_plugins_clicked),
2872 NULL); 2904 NULL);
2873 g_signal_connect_swapped(G_OBJECT(close), "clicked", 2905 g_signal_connect_swapped(G_OBJECT(close), "clicked",
2874 G_CALLBACK(gtk_widget_hide), 2906 G_CALLBACK(gtk_widget_hide),
2897 input_plugin_info); 2929 input_plugin_info);
2898 g_signal_connect_swapped(G_OBJECT(input_plugin_info), "clicked", 2930 g_signal_connect_swapped(G_OBJECT(input_plugin_info), "clicked",
2899 G_CALLBACK(plugin_treeview_open_info), 2931 G_CALLBACK(plugin_treeview_open_info),
2900 input_plugin_view); 2932 input_plugin_view);
2901 2933
2902 /* plugin->output page */
2903
2904 g_signal_connect(G_OBJECT(output_plugin_cbox), "changed",
2905 G_CALLBACK(output_plugin_enable_prefs),
2906 output_plugin_prefs);
2907 g_signal_connect_swapped(G_OBJECT(output_plugin_prefs), "clicked",
2908 G_CALLBACK(output_plugin_open_prefs),
2909 output_plugin_cbox);
2910
2911 g_signal_connect(G_OBJECT(output_plugin_cbox), "changed",
2912 G_CALLBACK(output_plugin_enable_info),
2913 output_plugin_info);
2914 g_signal_connect_swapped(G_OBJECT(output_plugin_info), "clicked",
2915 G_CALLBACK(output_plugin_open_info),
2916 output_plugin_cbox);
2917 2934
2918 /* plugin->general page */ 2935 /* plugin->general page */
2919 2936
2920 g_object_set_data(G_OBJECT(general_plugin_view), "plugin_type" , GINT_TO_POINTER(PLUGIN_VIEW_TYPE_GENERAL)); 2937 g_object_set_data(G_OBJECT(general_plugin_view), "plugin_type" , GINT_TO_POINTER(PLUGIN_VIEW_TYPE_GENERAL));
2921 g_signal_connect(G_OBJECT(general_plugin_view), "row-activated", 2938 g_signal_connect(G_OBJECT(general_plugin_view), "row-activated",