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

📄 main.c

📁 xmms-1.2.10.tar.gz学习使用的就下吧
💻 C
📖 第 1 页 / 共 5 页
字号:
	hide_widget(mainwin_position);	hide_widget(mainwin_sposition);	playlistwin_hide_timer();	draw_main_window(TRUE);	vis_clear(active_vis);	gtk_window_set_title(GTK_WINDOW(mainwin), "XMMS");}void mainwin_disable_seekbar(void){	/*	 * We dont call draw_main_window() here so this will not	 * remove them visually.  It will only prevent us from sending	 * any seek calls to the input plugin before the input plugin	 * calls ->set_info().	 */	hide_widget(mainwin_position);	hide_widget(mainwin_sposition);}void mainwin_release(GtkWidget * widget, GdkEventButton * event, gpointer callback_data){	gdk_pointer_ungrab(GDK_CURRENT_TIME);	/*	 * The gdk_flush() is just for making sure that the pointer really	 * gets ungrabbed before calling any button callbacks	 *	 */	gdk_flush();	if (dock_is_moving(mainwin))	{		dock_move_release(mainwin);	}	if (mainwin_menurow->mr_doublesize_selected)	{		event->x /= 2;		event->y /= 2;	}	handle_release_cb(mainwin_wlist, widget, event);	draw_main_window(FALSE);}void mainwin_motion(GtkWidget * widget, GdkEventMotion * event, gpointer callback_data){	XEvent ev;	gint i = 0;	XSync(GDK_DISPLAY(), False);	while (XCheckTypedEvent(GDK_DISPLAY(), MotionNotify, &ev))	{		event->x = ev.xmotion.x;		event->y = ev.xmotion.y;		i++;	}	if (cfg.doublesize)	{		event->x /= 2;		event->y /= 2;	}	if (dock_is_moving(mainwin))	{		dock_move_motion(mainwin, event);	}	else	{		handle_motion_cb(mainwin_wlist, widget, event);		draw_main_window(FALSE);	}	gdk_flush();}static gboolean inside_sensitive_widgets(gint x, gint y){	return (inside_widget(x, y, mainwin_menubtn) || inside_widget(x, y, mainwin_minimize) ||		inside_widget(x, y, mainwin_shade) || inside_widget(x, y, mainwin_close) ||		inside_widget(x, y, mainwin_rew) || inside_widget(x, y, mainwin_play) ||		inside_widget(x, y, mainwin_pause) || inside_widget(x, y, mainwin_stop) ||		inside_widget(x, y, mainwin_fwd) || inside_widget(x, y, mainwin_eject) ||		inside_widget(x, y, mainwin_shuffle) || inside_widget(x, y, mainwin_repeat) ||		inside_widget(x, y, mainwin_pl) || inside_widget(x, y, mainwin_eq) ||		inside_widget(x, y, mainwin_info) || inside_widget(x, y, mainwin_menurow) ||		inside_widget(x, y, mainwin_volume) || inside_widget(x, y, mainwin_balance) ||		(inside_widget(x, y, mainwin_position) && ((Widget *) mainwin_position)->visible) ||		inside_widget(x, y, mainwin_minus_num) || inside_widget(x, y, mainwin_10min_num) ||		inside_widget(x, y, mainwin_min_num) || inside_widget(x, y, mainwin_10sec_num) ||		inside_widget(x, y, mainwin_sec_num) || inside_widget(x, y, mainwin_vis) ||		inside_widget(x, y, mainwin_minimize) || inside_widget(x, y, mainwin_shade) ||		inside_widget(x, y, mainwin_close) || inside_widget(x, y, mainwin_menubtn) ||		inside_widget(x, y, mainwin_sposition) || inside_widget(x, y, mainwin_stime_min) ||		inside_widget(x, y, mainwin_stime_sec) || inside_widget(x, y, mainwin_srew) ||		inside_widget(x, y, mainwin_splay) || inside_widget(x, y, mainwin_spause) ||		inside_widget(x, y, mainwin_sstop) || inside_widget(x, y, mainwin_sfwd) ||		inside_widget(x, y, mainwin_seject) || inside_widget(x, y, mainwin_svis) ||		inside_widget(x, y, mainwin_about));}void mainwin_press(GtkWidget * widget, GdkEventButton * event, gpointer callback_data){	gboolean grab = TRUE;	if (cfg.doublesize)	{		/*		 * A hack to make doublesize transparent to callbacks.		 * We should make a copy of this data instead of		 * tampering with the data we get from gtk+		 */		event->x /= 2;		event->y /= 2;	}	if ((event->button == 4 || event->button == 5) &&	    event->type == GDK_BUTTON_PRESS)	{		/* Handle mouse wheel events */		int d = cfg.mouse_change;		if (event->button == 5)			d *= -1;		mainwin_set_volume_diff(d);	}	if ((event->button == 6 || event->button == 7) &&	    event->type == GDK_BUTTON_PRESS &&	    playlist_get_current_length() != -1)	{		/* Horizontal scrolling seeks */		int d = cfg.mouse_change * 1000;		if (event->button == 6)			d *= -1;				input_seek(CLAMP(input_get_time() + d, 0,				 playlist_get_current_length()) / 1000);	}	if (event->button == 1 && event->type == GDK_BUTTON_PRESS &&	    !inside_sensitive_widgets(event->x, event->y) &&	    (cfg.easy_move || event->y < 14))	{		if (0 && hint_move_resize_available())		{			hint_move_resize(mainwin, event->x_root,					 event->y_root, TRUE);			grab = FALSE;		}		else		{			gdk_window_raise(mainwin->window);			equalizerwin_raise();			playlistwin_raise();			dock_move_press(dock_window_list, mainwin, event, TRUE);		}	}	else if (event->button == 1 && event->type == GDK_2BUTTON_PRESS &&		 event->y < 14 && !inside_sensitive_widgets(event->x, event->y))	{		mainwin_set_shade(!cfg.player_shaded);		if (dock_is_moving(mainwin))			dock_move_release(mainwin);	}	else if (event->button == 1 && event->type == GDK_2BUTTON_PRESS &&		 inside_widget(event->x, event->y, mainwin_info))	{		playlist_fileinfo_current();	}	else	{		handle_press_cb(mainwin_wlist, widget, event);		draw_main_window(FALSE);	}	if ((event->button == 1) && event->type != GDK_2BUTTON_PRESS &&	    (inside_widget(event->x, event->y, mainwin_vis) ||	     inside_widget(event->x, event->y, mainwin_svis)))	{		cfg.vis_type++;		if (cfg.vis_type > VIS_OFF)			cfg.vis_type = VIS_ANALYZER;		mainwin_vis_set_type(cfg.vis_type);	}	if (event->button == 3)	{		if (inside_widget(event->x, event->y, mainwin_info))		{			util_item_factory_popup(mainwin_songname_menu,						event->x_root, event->y_root,						3, event->time);			grab = FALSE;		}		else if (inside_widget(event->x, event->y, mainwin_vis) ||			 inside_widget(event->x, event->y, mainwin_svis))		{			util_item_factory_popup(mainwin_vis_menu, event->x_root,						event->y_root, 3,						event->time);			grab = FALSE;		}		else		{			/*			 * Pop up the main menu a few pixels down.			 * This will avoid that anything is selected			 * if one right-clicks to focus the window			 * without raising it.			 */			util_item_factory_popup(mainwin_general_menu,						event->x_root,						event->y_root + 2,						3, event->time);			grab = FALSE;		}	}	if (event->button == 1)	{		if ((event->x > 35 && event->x < 100 &&		     event->y > 25 && event->y < 40) ||		    inside_widget(event->x, event->y, mainwin_stime_min) ||		    inside_widget(event->x, event->y, mainwin_stime_sec))		{			if (cfg.timer_mode == TIMER_ELAPSED)				set_timer_mode(TIMER_REMAINING);			else				set_timer_mode(TIMER_ELAPSED);		}	}	if (grab)		gdk_pointer_grab(mainwin->window, FALSE,				 GDK_BUTTON_MOTION_MASK |				 GDK_BUTTON_RELEASE_MASK,				 GDK_NONE, GDK_NONE, GDK_CURRENT_TIME);}void mainwin_focus_in(GtkWidget * widget, GdkEvent * event, gpointer callback_data){	mainwin_focus = 1;	if (!cfg.player_visible)	{		if (cfg.playlist_visible)			playlistwin_raise();		else if (cfg.equalizer_visible)			equalizerwin_raise();	}	mainwin_menubtn->pb_allow_draw = TRUE;	mainwin_minimize->pb_allow_draw = TRUE;	mainwin_shade->pb_allow_draw = TRUE;	mainwin_close->pb_allow_draw = TRUE;	draw_main_window(TRUE);}void mainwin_focus_out(GtkWidget * widget, GdkEventButton * event, gpointer callback_data){	mainwin_focus = 0;	mainwin_menubtn->pb_allow_draw = FALSE;	mainwin_minimize->pb_allow_draw = FALSE;	mainwin_shade->pb_allow_draw = FALSE;	mainwin_close->pb_allow_draw = FALSE;	draw_main_window(TRUE);}gboolean mainwin_keypress(GtkWidget * w, GdkEventKey * event, gpointer data){		switch(event->keyval)	{	case GDK_Up:	case GDK_KP_Up:		mainwin_set_volume_diff(2);		break;	case GDK_Down:	case GDK_KP_Down:		mainwin_set_volume_diff(-2);		break;	case GDK_Left:	case GDK_KP_Left:		if(playlist_get_current_length() != -1)			input_seek(CLAMP(input_get_time() - 5000, 0, playlist_get_current_length()) / 1000);		break;	case GDK_Right:	case GDK_KP_Right:		if(playlist_get_current_length() != -1)			input_seek(CLAMP(input_get_time() + 5000, 0, playlist_get_current_length()) / 1000);		break;	default:	     break;				}				return TRUE;}void mainwin_jump_to_time_cb(GtkWidget * widget, GtkWidget * entry){	guint min = 0, sec = 0, params, time;	gchar timestr[6];	strcpy(timestr, gtk_entry_get_text(GTK_ENTRY(entry)));	params = sscanf(timestr, "%u:%u", &min, &sec);	if (params == 2)		time = (min * 60) + sec;	else if (params == 1)		time = min;	else		return;	if (playlist_get_current_length() > -1 &&	    time <= (playlist_get_current_length() / 1000))	{		input_seek(time);		gtk_widget_destroy(mainwin_jtt);	}}void mainwin_jump_to_time(void){	GtkWidget *vbox, *frame, *vbox_inside, *hbox_new, *hbox_total;	GtkWidget *time_entry, *label, *bbox, *jump, *cancel;	guint len, tindex;	gchar timestr[10];	if (!get_input_playing())		return;	mainwin_jtt = gtk_window_new(GTK_WINDOW_DIALOG);	gtk_window_set_title(GTK_WINDOW(mainwin_jtt), _("Jump to time"));	gtk_window_set_policy(GTK_WINDOW(mainwin_jtt), FALSE, FALSE, FALSE);	gtk_window_set_transient_for(GTK_WINDOW(mainwin_jtt), GTK_WINDOW(mainwin));	gtk_signal_connect(GTK_OBJECT(mainwin_jtt), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &mainwin_jtt);	gtk_container_border_width(GTK_CONTAINER(mainwin_jtt), 10);	vbox = gtk_vbox_new(FALSE, 5);	gtk_container_add(GTK_CONTAINER(mainwin_jtt), vbox);	gtk_widget_show(vbox);	frame = gtk_frame_new(_("Jump to:"));	gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);	gtk_widget_set_usize(frame, 250, -1);	gtk_widget_show(frame);	vbox_inside = gtk_vbox_new(FALSE, 0);	gtk_container_add(GTK_CONTAINER(frame), vbox_inside);	gtk_widget_show(vbox_inside);	hbox_new = gtk_hbox_new(FALSE, 0);	gtk_box_pack_start(GTK_BOX(vbox_inside), hbox_new, TRUE, TRUE, 5);	gtk_widget_show(hbox_new);	time_entry = gtk_entry_new();	gtk_box_pack_start(GTK_BOX(hbox_new), time_entry, FALSE, FALSE, 5);	gtk_signal_connect(GTK_OBJECT(time_entry), "activate", GTK_SIGNAL_FUNC(mainwin_jump_to_time_cb), time_entry);	gtk_widget_show(time_entry);	gtk_widget_set_usize(time_entry, 70, -1);	label = gtk_label_new(_("minutes:seconds"));	gtk_box_pack_start(GTK_BOX(hbox_new), label, FALSE, FALSE, 5);	gtk_widget_show(label);	hbox_total = gtk_hbox_new(FALSE, 0);	gtk_box_pack_start(GTK_BOX(vbox_inside), hbox_total, TRUE, TRUE, 5);	gtk_widget_show(hbox_total);	label = gtk_label_new(_("Track length:"));	gtk_box_pack_start(GTK_BOX(hbox_total), label, FALSE, FALSE, 5);	gtk_widget_show(label);	len = playlist_get_current_length() / 1000;	sprintf(timestr, "%u:%2.2u", len / 60, len % 60);	label = gtk_label_new(timestr);	gtk_box_pack_start(GTK_BOX(hbox_total), label, FALSE, FALSE, 10);	gtk_widget_show(label);	bbox = gtk_hbutton_box_new();

⌨️ 快捷键说明

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