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

📄 keys.c

📁 avi player 使用Linux下 GDK,GTK
💻 C
📖 第 1 页 / 共 2 页
字号:
static void cb_remove_binding(void){	binding *kb;	kb = gtk_clist_get_row_data(GTK_CLIST(clist_wid), key_row);	key_remove(kb);}static void cb_select_binding(GtkWidget *w, gint row, gint col, GdkEventButton *ev, gpointer data){	binding *kb;	key_row = row;	kb = gtk_clist_get_row_data(GTK_CLIST(clist_wid), row);	gtk_list_select_item(GTK_LIST(GTK_COMBO(action_wid)->list), find_action_no(kb->action));	gtk_entry_set_text(GTK_ENTRY(key_wid), key_name(kb->key, kb->modifier));}static gboolean cb_change_key(GtkWidget *w, GdkEventKey *ev, gpointer data){	binding *kb;	char *keyname;	int modifier;	keyname = gdk_keyval_name(gdk_keyval_to_lower(ev->keyval));	modifier = ev->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK);	kb = gtk_clist_get_row_data(GTK_CLIST(clist_wid), key_row);	kb->key = keyname;	kb->modifier = modifier;	keyname = key_name(keyname, modifier);	gtk_entry_set_text(GTK_ENTRY(w), keyname);	gtk_clist_set_text(GTK_CLIST(clist_wid), key_row, 1, keyname);	return TRUE;}static void cb_change_action(GtkList *list, GtkWidget *child){	binding *kb;	int i;	kb = gtk_clist_get_row_data(GTK_CLIST(clist_wid), key_row);	i = gtk_list_child_position(list, child);	if(i != -1)	{		kb->action = &actions[i];		gtk_clist_set_text(GTK_CLIST(clist_wid), key_row, 0, kb->action->label);	}}void keywin_init(void){	GtkWidget *vb, *hb, *sw, *t;	GList *acts = NULL;	char *titles[] = { _("Action"), _("Key") };	int i;	key_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_title(GTK_WINDOW(key_win), _("Sinek Key Bindings"));	gtk_window_set_wmclass(GTK_WINDOW(key_win), "keybindings", "sinek");	vb = gtk_vbox_new(FALSE, 0);	gtk_widget_show(vb);	gtk_container_add(GTK_CONTAINER(key_win), vb);	gtk_container_set_border_width(GTK_CONTAINER(vb), 4);	sw = gtk_scrolled_window_new(NULL, NULL);	gtk_widget_show(sw);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);	gtk_box_pack_start(GTK_BOX(vb), sw, TRUE, TRUE, 0);	clist_wid = gtk_clist_new_with_titles(2, titles);	gtk_widget_show(clist_wid);	gtk_container_add(GTK_CONTAINER(sw), clist_wid);	gtk_container_set_border_width(GTK_CONTAINER(clist_wid), 2);	g_signal_connect(G_OBJECT(clist_wid), "select_row", G_CALLBACK(cb_select_binding), NULL);	hb = gtk_hbox_new(TRUE, 3);	gtk_widget_show(hb);	gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, TRUE, 3);	gtk_container_set_border_width(GTK_CONTAINER(hb), 0);	t = gtk_button_new_with_label(_("Add Binding"));	gtk_widget_show(t);	gtk_box_pack_start(GTK_BOX(hb), t, TRUE, TRUE, 3);	g_signal_connect(G_OBJECT(t), "clicked", G_CALLBACK(cb_add_binding), NULL);	t = gtk_button_new_with_label(_("Remove Binding"));	gtk_widget_show(t);	gtk_box_pack_start(GTK_BOX(hb), t, TRUE, TRUE, 3);	g_signal_connect(G_OBJECT(t), "clicked", G_CALLBACK(cb_remove_binding), NULL);	hb = gtk_hbox_new(FALSE, 5);	gtk_widget_show(hb);	gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 0);	gtk_container_set_border_width(GTK_CONTAINER(hb), 5);	t = gtk_label_new(_("Action"));	gtk_widget_show(t);	gtk_box_pack_start(GTK_BOX(hb), t, FALSE, FALSE, 0);	action_wid = gtk_combo_new();	gtk_widget_show(action_wid);	gtk_box_pack_start(GTK_BOX(hb), action_wid, TRUE, TRUE, 0);	gtk_editable_set_editable(GTK_EDITABLE(GTK_COMBO(action_wid)->entry), FALSE);	for(i = 0; actions[i].name; i++)		acts = g_list_append(acts, (gpointer)actions[i].label);	gtk_combo_set_popdown_strings(GTK_COMBO(action_wid), acts);	g_list_free(acts);	g_signal_connect(G_OBJECT(GTK_COMBO(action_wid)->list), "select_child", G_CALLBACK(cb_change_action), NULL);	t = gtk_label_new(_("Key"));	gtk_widget_show(t);	gtk_box_pack_start(GTK_BOX(hb), t, FALSE, FALSE, 0);	key_wid = gtk_entry_new();	gtk_widget_show(key_wid);	gtk_box_pack_start(GTK_BOX(hb), key_wid, TRUE, TRUE, 0);	g_signal_connect(G_OBJECT(key_wid), "key_press_event", G_CALLBACK(cb_change_key), NULL);	hb = gtk_hbutton_box_new();	gtk_widget_show(hb);	gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 0);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hb), GTK_BUTTONBOX_END);	gtk_container_set_border_width(GTK_CONTAINER(hb), 5);	gtk_box_set_spacing(GTK_BOX(hb), 5);	t = gtk_button_new_with_label(_("Reset to Defaults"));	gtk_widget_show(t);	gtk_container_add(GTK_CONTAINER(hb), t);	g_signal_connect(G_OBJECT(t), "clicked", G_CALLBACK(reset_keys), NULL);	t = gtk_button_new_from_stock(GTK_STOCK_SAVE);	gtk_widget_show(t);	gtk_container_add(GTK_CONTAINER(hb), t);	g_signal_connect(G_OBJECT(t), "clicked", G_CALLBACK(save_keys), NULL);	t = gtk_button_new_from_stock(GTK_STOCK_OK);	gtk_widget_show(t);	gtk_container_add(GTK_CONTAINER(hb), t);	g_signal_connect_swapped(G_OBJECT(t), "clicked", G_CALLBACK(gtk_widget_hide), GTK_OBJECT(key_win));	wm_manage(key_win, WM_NORMAL);}void execute_cmd(cmd_type cmd){	xine_event_t xinev;	int tmp;	switch(cmd)	{		case CMD_NONE:			break;		case CMD_QUIT:			sinek.playing = 0;			scrsaver_enable();			sinek_delete(media);			gtk_main_quit();			break;		case CMD_PLAY:			scrsaver_disable();			sinek_play(media);			sinek.pause = 0;			break;		case CMD_PAUSE:			if(sinek.pause)				xine_set_speed(sinek.xine, SPEED_NORMAL);			else				xine_set_speed(sinek.xine, SPEED_PAUSE);			sinek.pause = ~sinek.pause;			break;		case CMD_STOP:			sinek.playing = 0;			sinek_stop(media);			scrsaver_enable();			break;		case CMD_NEXT:			pl_next();			break;		case CMD_PREVIOUS:			pl_prev();			break;		case CMD_VOLUME_UP:			audio_slide_volume(1);			break;		case CMD_VOLUME_DOWN:			audio_slide_volume(-1);			break;		case CMD_SPEED_FAST:			tmp = xine_get_speed(sinek.xine);			if(tmp != SPEED_PAUSE && tmp < SPEED_FAST_4)				xine_set_speed(sinek.xine, tmp * 2);			break;		case CMD_SPEED_SLOW:			tmp = xine_get_speed(sinek.xine);			if(tmp > SPEED_SLOW_4)				xine_set_speed(sinek.xine, tmp / 2);			break;		case CMD_AV_OFFSET_DOWN:			tmp = xine_get_av_offset(sinek.xine);			tmp = tmp - 3600;			xine_set_av_offset(sinek.xine, tmp);			break;		case CMD_AV_OFFSET_UP:			tmp = xine_get_av_offset(sinek.xine);			tmp = tmp + 3600;			xine_set_av_offset(sinek.xine, tmp);			break;		case CMD_SHOW_ABOUT:			wm_show(about_build);			break;		case CMD_SHOW_TUNER:			tune_show();			break;		case CMD_SHOW_KEYS:			gtk_widget_show(key_win);			break;		case CMD_SHOW_PLAYLIST:			wm_toggle(pl_build);			break;		case CMD_SHOW_VIDEO:			video_show();			break;		case CMD_SHOW_CONTROLS:			wm_toggle(control_build);			break;		case CMD_SHOW_PREFS:			wm_show(prf_build);			break;		case CMD_TOGGLE_GUI:			if(sinek.hide)				wm_show_all();			else				wm_hide_all();			sinek.hide = ~sinek.hide;			break;		case CMD_TOGGLE_FULLSCREEN:			if(sinek.video_mode == VIDEO_FULLSCREEN)				video_set_mode(VIDEO_WINDOW);			else				video_set_mode(VIDEO_FULLSCREEN);			break;		case CMD_TOGGLE_ASPECT:			tmp = media->vd->get_property(media->vd, VO_PROP_ASPECT_RATIO);			media->vd->set_property(media->vd, VO_PROP_ASPECT_RATIO, tmp + 1);			break;		case CMD_TOGGLE_INTERLEAVE:			tmp = media->vd->get_property(media->vd, VO_PROP_INTERLACED);			media->vd->set_property(media->vd, VO_PROP_INTERLACED, 1 - tmp);			break;		case CMD_TOGGLE_TVMODE:			tmp = media->vd->get_property(media->vd, VO_PROP_ASPECT_RATIO);			media->vd->set_property(media->vd, VO_PROP_TVMODE, tmp);			break;		case CMD_TOGGLE_SUBTITLES:			if(sinek.osd_subtitles)				osd_hide();			else				osd_show();			break;		case CMD_TOGGLE_REPEAT:			sinek.repeat_one = ~sinek.repeat_one;			sinek.signal_fake = 1;			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sinek.repeat_tog), sinek.repeat_one);			sinek.signal_fake = 0;			update_pix_toggle(sinek.repeat_tog);			break;		case CMD_TOGGLE_REPEAT_ALL:			sinek.repeat_all = ~sinek.repeat_all;			sinek.signal_fake = 1;			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(sinek.repeat_all_chk), sinek.repeat_all);			sinek.signal_fake = 0;			media->conf->update_num(media->conf, "sinek.repeat_all", sinek.repeat_all);			break;		case CMD_TOGGLE_MUTE:			audio_toggle_mute();			sinek.signal_fake = 1;			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sinek.mute_tog), sinek.mute);			sinek.signal_fake = 0;			break;		case CMD_SPU_NEXT:			tmp = xine_get_spu_channel(sinek.xine);			xine_select_spu_channel(sinek.xine, tmp + 1);			break;		case CMD_SPU_PREVIOUS:			tmp = xine_get_spu_channel(sinek.xine);			xine_select_spu_channel(sinek.xine, tmp - 1);			break;		case CMD_AUDIO_NEXT:			tmp = xine_get_audio_selection(sinek.xine);			xine_select_audio_channel(sinek.xine, tmp + 1);			break;		case CMD_AUDIO_PREVIOUS:			tmp = xine_get_audio_selection(sinek.xine);			xine_select_audio_channel(sinek.xine, tmp - 1);			break;		case CMD_ZOOM_IN:			video_zoom(1);			break;		case CMD_ZOOM_OUT:			video_zoom(-1);			break;		case CMD_ZOOM_RESET:			video_zoom(0);			break;		case CMD_WINDOW_1x1:			video_set_mode(VIDEO_WINDOW);			video_scale_abs(1);			break;		case CMD_WINDOW_2x2:			video_set_mode(VIDEO_WINDOW);			video_scale_abs(2);			break;		case CMD_WINDOW_FULLSCREEN:			video_set_mode(VIDEO_FULLSCREEN);			break;		case CMD_WINDOW_BACKGROUND:			video_set_mode(VIDEO_BACKGROUND);			break;		case CMD_WINDOW_REDUCE:			video_scale(0.8);			break;		case CMD_WINDOW_ENLARGE:			video_scale(1.2);			break;		case CMD_EVENT_MENU1:			xinev.type = XINE_EVENT_INPUT_MENU1;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_MENU2:			xinev.type = XINE_EVENT_INPUT_MENU2;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_MENU3:			xinev.type = XINE_EVENT_INPUT_MENU3;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_UP:			xinev.type = XINE_EVENT_INPUT_UP;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_DOWN:			xinev.type = XINE_EVENT_INPUT_DOWN;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_LEFT:			xinev.type = XINE_EVENT_INPUT_LEFT;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_RIGHT:			xinev.type = XINE_EVENT_INPUT_RIGHT;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_NEXT:			xinev.type = XINE_EVENT_INPUT_NEXT;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_PRIOR:			xinev.type = XINE_EVENT_INPUT_PREVIOUS;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_ANGLE_NEXT:			xinev.type = XINE_EVENT_INPUT_ANGLE_NEXT;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_ANGLE_PRIOR:			xinev.type = XINE_EVENT_INPUT_ANGLE_PREVIOUS;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_EVENT_SELECT:			xinev.type = XINE_EVENT_INPUT_SELECT;			xine_send_event(sinek.xine, &xinev);			break;		case CMD_GOTO_MARK_0:		case CMD_GOTO_MARK_1:		case CMD_GOTO_MARK_2:		case CMD_GOTO_MARK_3:		case CMD_GOTO_MARK_4:		case CMD_GOTO_MARK_5:		case CMD_GOTO_MARK_6:		case CMD_GOTO_MARK_7:		case CMD_GOTO_MARK_8:		case CMD_GOTO_MARK_9:			video_seek(sinek.marks[cmd - CMD_GOTO_MARK_0]);			sinek.marks[0] = xine_get_current_time(sinek.xine);			break;		case CMD_SET_MARK_1:		case CMD_SET_MARK_2:		case CMD_SET_MARK_3:		case CMD_SET_MARK_4:		case CMD_SET_MARK_5:		case CMD_SET_MARK_6:		case CMD_SET_MARK_7:		case CMD_SET_MARK_8:		case CMD_SET_MARK_9:			sinek.marks[cmd - CMD_SET_MARK_1 + 1] = xine_get_current_time(sinek.xine);			break;	}}

⌨️ 快捷键说明

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