⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui_main.c

📁 Aqualung is an advanced music player primarily targeted for the GNU/Linux operating system, but als
💻 C
📖 第 1 页 / 共 5 页
字号:
	}#else	set_bps_label(disp_info.bps, 0, 0);#endif /* HAVE_MPEG */	set_mono_label(disp_info.is_mono);	set_output_label(output, out_SR);	set_src_type_label(src_type);}voidzero_displays(void) {	disp_info.total_samples = 0;	disp_info.sample_rate = 0;	disp_info.is_mono = 0;	disp_info.format_major = 0;	disp_info.format_minor = 0;	disp_info.bps = 0;	disp_samples = 0;	disp_pos = 0;	refresh_displays();}voidsave_window_position(void) {	gtk_window_get_position(GTK_WINDOW(main_window), &main_pos_x, &main_pos_y);	if (!options.playlist_is_embedded && playlist_on) {		gtk_window_get_position(GTK_WINDOW(playlist_window), &playlist_pos_x, &playlist_pos_y);	}	if (browser_on) {		gtk_window_get_position(GTK_WINDOW(browser_window), &browser_pos_x, &browser_pos_y);	}	gtk_window_get_size(GTK_WINDOW(main_window), &main_size_x, &main_size_y);	gtk_window_get_size(GTK_WINDOW(browser_window), &browser_size_x, &browser_size_y);	if (!options.playlist_is_embedded) {		gtk_window_get_size(GTK_WINDOW(playlist_window), &playlist_size_x, &playlist_size_y);	} else {		playlist_size_x = playlist_window->allocation.width;		playlist_size_y = playlist_window->allocation.height;	}	if (!options.hide_comment_pane) {		browser_paned_pos = gtk_paned_get_position(GTK_PANED(browser_paned));	}}voidrestore_window_position(void) {	gtk_window_move(GTK_WINDOW(main_window), main_pos_x, main_pos_y);	deflicker();	gtk_window_move(GTK_WINDOW(browser_window), browser_pos_x, browser_pos_y);	deflicker();	if (!options.playlist_is_embedded) {		gtk_window_move(GTK_WINDOW(playlist_window), playlist_pos_x, playlist_pos_y);		deflicker();	}		gtk_window_resize(GTK_WINDOW(main_window), main_size_x, main_size_y);	deflicker();	gtk_window_resize(GTK_WINDOW(browser_window), browser_size_x, browser_size_y);	deflicker();	if (!options.playlist_is_embedded) {		gtk_window_resize(GTK_WINDOW(playlist_window), playlist_size_x, playlist_size_y);		deflicker();	}	if (!options.hide_comment_pane) {		gtk_paned_set_position(GTK_PANED(browser_paned), browser_paned_pos);		deflicker();	}}voidchange_skin(char * path) {	int st_play = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(play_button));	int st_pause = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pause_button));	int st_r_track = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(repeat_button));	int st_r_all = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(repeat_all_button));	int st_shuffle = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(shuffle_button));	int st_fx = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(plugin_toggle));	int st_mstore = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(musicstore_toggle));	int st_plist = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_toggle));#ifdef HAVE_LADSPA	GtkTreeIter iter;	gpointer gp_instance;	int i = 0;#endif /* HAVE_LADSPA */	char rcpath[MAXLEN];        GdkColor color;	g_source_remove(timeout_tag);	save_window_position();	gtk_widget_destroy(main_window);	deflicker();	if (!options.playlist_is_embedded) {		gtk_widget_destroy(playlist_window);		deflicker();	}	gtk_widget_destroy(browser_window);	deflicker();#ifdef HAVE_LADSPA	gtk_widget_destroy(fxbuilder_window);	deflicker();#endif /* HAVE_LADSPA */		sprintf(rcpath, "%s/rc", path);	gtk_rc_parse(rcpath);	create_main_window(path);	deflicker();	create_playlist();	deflicker();	create_music_browser();	deflicker();#ifdef HAVE_LADSPA	create_fxbuilder();	deflicker();#endif /* HAVE_LADSPA */		g_signal_handler_block(G_OBJECT(play_button), play_id);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(play_button), st_play);	g_signal_handler_unblock(G_OBJECT(play_button), play_id);	g_signal_handler_block(G_OBJECT(pause_button), pause_id);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pause_button), st_pause);	g_signal_handler_unblock(G_OBJECT(pause_button), pause_id);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(repeat_button), st_r_track);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(repeat_all_button), st_r_all);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(shuffle_button), st_shuffle);	if (options.playlist_is_embedded)		g_signal_handlers_block_by_func(G_OBJECT(playlist_toggle), playlist_toggled, NULL);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_toggle), st_plist);	if (options.playlist_is_embedded)		g_signal_handlers_unblock_by_func(G_OBJECT(playlist_toggle), playlist_toggled, NULL);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(musicstore_toggle), st_mstore);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(plugin_toggle), st_fx);	gtk_widget_show_all(main_window);	deflicker();	deflicker();        cover_show_flag = 0;        gtk_widget_hide(cover_image_area);        gtk_widget_hide(c_event_box);	if (options.playlist_is_embedded) {		if (!playlist_on) {			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_toggle), FALSE);			gtk_widget_hide(playlist_window);			deflicker();		}	}#ifdef HAVE_LADSPA        while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(running_store), &iter, NULL, i) &&		i < MAX_PLUGINS) {		gtk_tree_model_get(GTK_TREE_MODEL(running_store), &iter, 1, &gp_instance, -1);		gtk_widget_reset_rc_styles(((plugin_instance *)gp_instance)->window);		gtk_widget_queue_draw(((plugin_instance *)gp_instance)->window);		deflicker();		++i;	}#endif /* HAVE_LADSPA */	if (info_window) {		gtk_widget_reset_rc_styles(info_window);		gtk_widget_queue_draw(info_window);		gtk_window_present(GTK_WINDOW(info_window));		deflicker();	}	if (vol_window) {		gtk_widget_reset_rc_styles(vol_window);		gtk_widget_queue_draw(vol_window);		deflicker();	}	if (build_prog_window) {		gtk_widget_reset_rc_styles(build_prog_window);		gtk_widget_queue_draw(build_prog_window);		deflicker();	}#ifdef HAVE_SYSTRAY	gtk_widget_reset_rc_styles(systray_menu);	gtk_widget_queue_draw(systray_menu);	deflicker();#endif /* HAVE_SYSTRAY */	restore_window_position();	deflicker();	refresh_displays();        if (options.override_skin_settings && (gdk_color_parse(options.activesong_color, &color) == TRUE)) {                /* it's temporary workaround - see playlist.c FIXME tag for details */                if (!color.red && !color.green && !color.blue)                        color.red++;                play_list->style->fg[SELECTED].red = color.red;                play_list->style->fg[SELECTED].green = color.green;                play_list->style->fg[SELECTED].blue = color.blue;        }	set_playlist_color();		gtk_adjustment_set_value(GTK_ADJUSTMENT(adj_vol), vol);	gtk_adjustment_set_value(GTK_ADJUSTMENT(adj_bal), bal);	timeout_tag = g_timeout_add(TIMEOUT_PERIOD, timeout_callback, NULL);        show_active_position_in_playlist();        gtk_widget_realize(play_list);        if (options.playlist_is_embedded) {                gtk_widget_grab_focus(GTK_WIDGET(play_list));        }}voidmain_window_close(GtkWidget * widget, gpointer data) {	send_cmd = CMD_FINISH;	rb_write(rb_gui2disk, &send_cmd, 1);	try_waking_disk_thread();	vol_cancelled = 1;	if (music_store_changed) {		GtkWidget * dialog;                dialog = gtk_message_dialog_new(GTK_WINDOW(main_window),                                                GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,                                                GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,                                                 _("One or more stores in Music Store have been modified.\n"                                                "Do you want to save them before exiting?"));		gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);		gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);		gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);				if (aqualung_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {			save_all_music_store();		}				gtk_widget_destroy(dialog);	}		if (systray_main_window_on) {		save_window_position();	}	save_config();#ifdef HAVE_LADSPA	save_plugin_data();	lrdf_cleanup();#endif /* HAVE_LADSPA */	if (options.auto_save_playlist) {		char playlist_name[MAXLEN];		snprintf(playlist_name, MAXLEN-1, "%s/%s", options.confdir, "playlist.xml");		save_playlist(playlist_name);	}        pango_font_description_free(fd_playlist);        pango_font_description_free(fd_browser);	gtk_main_quit();}/***********************************************************************************/voidconf__options_cb(gpointer data) {	create_options_window();}voidconf__skin_cb(gpointer data) {	create_skin_window();}voidconf__jack_cb(gpointer data) {#ifdef HAVE_JACK	port_setup_dialog();#endif /* HAVE_JACK */}voidconf__fileinfo_cb(gpointer data) {	if (is_file_loaded) {		GtkTreeIter dummy;		const char * name = gtk_label_get_text(GTK_LABEL(label_title));			show_file_info((char *)name, current_file, 0, NULL, dummy);	}}voidconf__about_cb(gpointer data) {	create_about_window();}voidconf__quit_cb(gpointer data) {	main_window_close(NULL, NULL);}gintvol_bal_timeout_callback(gpointer data) {	refresh_time_label = 1;	vol_bal_timeout_tag = 0;	refresh_time_displays();	return FALSE;}voidmusicstore_toggled(GtkWidget * widget, gpointer data) {	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {		show_music_browser();	} else {		hide_music_browser();	}}voidplaylist_toggled(GtkWidget * widget, gpointer data) {	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {		show_playlist();	} else {		hide_playlist();	}}voidplugin_toggled(GtkWidget * widget, gpointer data) {#ifdef HAVE_LADSPA	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {		show_fxbuilder();	} else {		hide_fxbuilder();	}#else	/* XXX */	printf("Aqualung compiled without LADSPA plugin support.\n");#endif /* HAVE_LADSPA */}gintmain_window_key_pressed(GtkWidget * widget, GdkEventKey * event) {        shift_state = event->state & GDK_SHIFT_MASK;	switch (event->keyval) {		case GDK_KP_Divide:		refresh_time_label = 0;		if (vol_bal_timeout_tag) {			g_source_remove(vol_bal_timeout_tag);		}					vol_bal_timeout_tag = g_timeout_add(1000, vol_bal_timeout_callback, NULL);                if(event->state & GDK_MOD1_MASK) {  /* ALT + KP_Divide */			g_signal_emit_by_name(G_OBJECT(scale_bal), "move-slider",					      GTK_SCROLL_STEP_BACKWARD, NULL);		} else {			g_signal_emit_by_name(G_OBJECT(scale_vol), "move-slider",					      GTK_SCROLL_STEP_BACKWARD, NULL);		}		return TRUE;	case GDK_KP_Multiply:		refresh_time_label = 0;		if (vol_bal_timeout_tag) {			g_source_remove(vol_bal_timeout_tag);		}				vol_bal_timeout_tag = g_timeout_add(1000, vol_bal_timeout_callback, NULL);                if(event->state & GDK_MOD1_MASK) {  /* ALT + KP_Multiply */			g_signal_emit_by_name(G_OBJECT(scale_bal),					      "move-slider", GTK_SCROLL_STEP_FORWARD, NULL);		} else {			g_signal_emit_by_name(G_OBJECT(scale_vol),					      "move-slider", GTK_SCROLL_STEP_FORWARD, NULL);		}		return TRUE;	case GDK_Right:		if (is_file_loaded && allow_seeks) {			refresh_scale = 0;			g_signal_emit_by_name(G_OBJECT(scale_pos), "move-slider",					      GTK_SCROLL_STEP_FORWARD, NULL);		}		return TRUE;	case GDK_Left:		if (is_file_loaded && allow_seeks) {			refresh_scale = 0;			g_signal_emit_by_name(G_OBJECT(scale_pos), "move-slider",					      GTK_SCROLL_STEP_BACKWARD, NULL);		}		return TRUE;	case GDK_b:	case GDK_B:	case GDK_period:		next_event(NULL, NULL, NULL);		return TRUE;	case GDK_z:	case GDK_Z:	case GDK_y:	case GDK_Y:	case GDK_comma:		prev_event(NULL, NULL, NULL);		return TRUE;	case GDK_s:	case GDK_S:                if(event->state & GDK_MOD1_MASK) {  /* ALT + s */			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(musicstore_toggle),						     !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(musicstore_toggle)));		} else {			stop_event(NULL, NULL, NULL);		}		return TRUE;	case GDK_v:	case GDK_V:		stop_event(NULL, NULL, NULL);		return TRUE;	case GDK_c:	case GDK_C:	case GDK_space:		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pause_button),					     !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pause_button)));		return TRUE;	case GDK_p:	case GDK_P:		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(play_button),					     !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(play_button)));		return TRUE;	case GDK_i:	case GDK_I:		if (!options.playlist_is_embedded) {                        conf__fileinfo_cb(NULL);        		return TRUE;                }                break;	case GDK_BackSpace:		if (allow_seeks) {			seek_t seek;						send_cmd = CMD_SEEKTO;			seek.seek_to_pos = 0.0f;			rb_write(rb_gui2disk, &send_cmd, 1);			rb_write(rb_gui2disk, (char *)&seek, sizeof(seek_t));			try_waking_disk_thread();			refresh_scale_suppress = 2;		}				if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pause_button)))			gtk_adjustment_set_value(GTK_ADJUSTMENT(adj_pos), 0.0f);				return TRUE;	case GDK_l:	case GDK_L:                if(event->state & GDK_MOD1_MASK) {  /* ALT + l */			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(playlist_toggle),						     !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(playlist_toggle)));		}		return TRUE;	case GDK_x:	case GDK_X:                if(event->state & GDK_MOD1_MASK) {  /* ALT + x */			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(plugin_toggle),						     !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(plugin_toggle)));		} else {			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(play_button),						     !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(play_button)));		}		return TRUE;	case GDK_q:	case GDK_Q:                if(event->state & GDK_CONTROL_MASK) {  /* CTRL + q */			main_window_close(NULL, NULL);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -