📄 gui_main.cpp
字号:
videoradio[0] = CreateMenuRadio(videosub, "50 %", &videosizelist, GTK_SIGNAL_FUNC(on_video_radio), GINT_TO_POINTER(50)); videoradio[1] = CreateMenuRadio(videosub, "100 %", &videosizelist, GTK_SIGNAL_FUNC(on_video_radio), GINT_TO_POINTER(100)); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM((videoradio[1])), TRUE); videoradio[2] = CreateMenuRadio(videosub, "200 %", &videosizelist, GTK_SIGNAL_FUNC(on_video_radio), GINT_TO_POINTER(200)); menuitem = CreateMenuItem(videosub, accel_group, tooltips, NULL, NULL, NULL, NULL, NULL); menuitem = CreateMenuItem(videosub, accel_group, tooltips, "Full Screen", "M-<enter>", "Full Screen", GTK_SIGNAL_FUNC(on_video_fullscreen), NULL); menuitem = CreateMenuItem(videosub, accel_group, tooltips, NULL, NULL, NULL, NULL, NULL); GSList *aspectratiolist = NULL; int value = config.get_config_value(CONFIG_ASPECT_RATIO); set_aspect_ratio(value); aspectratio[0] = CreateMenuRadio(videosub, "Aspect Ration Auto", &aspectratiolist, GTK_SIGNAL_FUNC(on_aspect_ratio), GINT_TO_POINTER(0)); aspectratio[1] = CreateMenuRadio(videosub, "3:4", &aspectratiolist, GTK_SIGNAL_FUNC(on_aspect_ratio), GINT_TO_POINTER(1)); aspectratio[2] = CreateMenuRadio(videosub, "16:9", &aspectratiolist, GTK_SIGNAL_FUNC(on_aspect_ratio), GINT_TO_POINTER(2)); aspectratio[3] = CreateMenuRadio(videosub, "1.85 Letterbox", &aspectratiolist, GTK_SIGNAL_FUNC(on_aspect_ratio), GINT_TO_POINTER(2)); aspectratio[4] = CreateMenuRadio(videosub, "2.35 Letterbox", &aspectratiolist, GTK_SIGNAL_FUNC(on_aspect_ratio), GINT_TO_POINTER(2)); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(aspectratio[value]), TRUE); CreateMenuItemSeperator(menu); seek_menuitem = CreateMenuItem(menu, accel_group, tooltips, "Seek", "^S", "Seek", GTK_SIGNAL_FUNC(on_menu_seek), NULL); gtk_widget_set_sensitive(seek_menuitem, 0); CreateMenuItemSeperator(menu); menuitem = CreateMenuCheck(menu, "Play Audio", GTK_SIGNAL_FUNC(on_media_play_audio), NULL, config.get_config_value(CONFIG_PLAY_AUDIO)); menuitem = CreateMenuCheck(menu, "Play Video", GTK_SIGNAL_FUNC(on_media_play_video), NULL, config.get_config_value(CONFIG_PLAY_VIDEO)); CreateMenuItemSeperator(menu); menu = CreateBarSubMenu(menubar, "Network"); menuitem = CreateMenuCheck(menu, "Use RTP over RTSP(TCP)", GTK_SIGNAL_FUNC(on_network_rtp_over_rtsp), NULL, config.get_config_value(CONFIG_USE_RTP_OVER_RTSP)); menu = CreateBarSubMenu(menubar, "Help"); menuitem = CreateMenuItem(menu, accel_group, tooltips, "Help", NULL, NULL, GTK_SIGNAL_FUNC(on_main_menu_help), NULL); CreateMenuItemSeperator(menu); GtkWidget *debugsub; debugsub = CreateSubMenu(menu, "Debug"); menuitem = CreateMenuCheck(debugsub, "Mpeg4ISOOnly", GTK_SIGNAL_FUNC(on_debug_mpeg4isoonly), NULL, config.get_config_value(CONFIG_USE_MPEG4_ISO_ONLY) == 0 ? FALSE : TRUE); menuitem = CreateMenuCheck(debugsub, "Use Old mp4 library", GTK_SIGNAL_FUNC(on_debug_use_old_mp4_lib), NULL, config.get_config_value(CONFIG_USE_OLD_MP4_LIB) == 0 ? FALSE : TRUE); CreateLogLevelSubmenu(debugsub, "HTTP library", config.get_config_value(CONFIG_HTTP_DEBUG), GTK_SIGNAL_FUNC(on_debug_http)); CreateLogLevelSubmenu(debugsub, "RTSP library", config.get_config_value(CONFIG_RTSP_DEBUG), GTK_SIGNAL_FUNC(on_debug_rtsp)); CreateLogLevelSubmenu(debugsub, "RTP library", config.get_config_value(CONFIG_RTP_DEBUG), GTK_SIGNAL_FUNC(on_debug_rtp)); CreateLogLevelSubmenu(debugsub, "SDP library", config.get_config_value(CONFIG_SDP_DEBUG), GTK_SIGNAL_FUNC(on_debug_sdp)); CreateLogLevelSubmenu(debugsub, "Mpeg2 Transport Library", config.get_config_value(CONFIG_MPEG2T_DEBUG), GTK_SIGNAL_FUNC(on_debug_mpeg2t)); CreateMenuItemSeperator(menu); menuitem = CreateMenuItem(menu, accel_group, tooltips, "About", NULL, NULL, GTK_SIGNAL_FUNC(on_main_menu_about), NULL); // this is how you turn off the widget gtk_widget_set_sensitive(close_menuitem, 0); GtkWidget *hbox; /* * first line - Play: combo box browse button */ hbox = gtk_hbox_new(FALSE, 1); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, FALSE, 5); GtkWidget *label; label = gtk_label_new("Play: "); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10); gtk_widget_show(label); // combo box uses list playlist. combo = gtk_combo_new(); gtk_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "activate", GTK_SIGNAL_FUNC(on_play_list_selected), NULL); gtk_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->list), "select_child", GTK_SIGNAL_FUNC(on_playlist_child_selected), combo); gtk_combo_set_popdown_strings (GTK_COMBO(combo), playlist); gtk_combo_set_value_in_list(GTK_COMBO(combo), FALSE, FALSE); gtk_combo_disable_activate(GTK_COMBO(combo)); gtk_combo_set_use_arrows_always(GTK_COMBO(combo), 1); gtk_combo_set_case_sensitive(GTK_COMBO(combo), TRUE); gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0); gtk_widget_show(combo); /* button for browse */ GtkWidget *button; button = gtk_button_new_with_label("Browse"); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(on_browse_button_clicked), NULL); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10); gtk_widget_show(button); /************************************************************************* * 2nd line play pause stop speaker volume *************************************************************************/ hbox = gtk_hbox_new(FALSE, 1); gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, FALSE, 5); gtk_widget_show(hbox); GtkWidget *vbox, *hbox2; vbox = gtk_vbox_new(TRUE, 1); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5); gtk_widget_show(vbox); hbox2 = gtk_hbox_new(TRUE, 1); gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0); gtk_widget_show(hbox2); GtkWidget *image; play_button = gtk_toggle_button_new(); image = CreateWidgetFromXpm(main_window,xpm_play); gtk_container_add(GTK_CONTAINER(play_button), image);#if 0 //gdk_pixmap_unref((GdkPixmap *)image);#endif gtk_widget_show(play_button); gtk_signal_connect(GTK_OBJECT(play_button), "clicked", GTK_SIGNAL_FUNC(on_play_clicked), NULL); gtk_box_pack_start(GTK_BOX(hbox2), play_button, FALSE, FALSE, 2); pause_button = gtk_toggle_button_new(); image = CreateWidgetFromXpm(main_window,xpm_pause); gtk_container_add(GTK_CONTAINER(pause_button), image);#if 0 gdk_pixmap_unref((GdkPixmap *)image);#endif gtk_widget_show(pause_button); gtk_signal_connect(GTK_OBJECT(pause_button), "clicked", GTK_SIGNAL_FUNC(on_pause_clicked), NULL); gtk_box_pack_start(GTK_BOX(hbox2), pause_button, FALSE, FALSE, 2); stop_button = gtk_toggle_button_new(); image = CreateWidgetFromXpm(main_window,xpm_stop); gtk_container_add(GTK_CONTAINER(stop_button), image);#if 0 gdk_pixmap_unref((GdkPixmap *)image);#endif gtk_widget_show(stop_button); gtk_signal_connect(GTK_OBJECT(stop_button), "clicked", GTK_SIGNAL_FUNC(on_stop_clicked), NULL); gtk_box_pack_start(GTK_BOX(hbox2), stop_button, FALSE, FALSE, 2); gtk_widget_set_sensitive(play_button, 0); gtk_widget_set_sensitive(pause_button, 0); gtk_widget_set_sensitive(stop_button, 0); GtkWidget *sep = gtk_vseparator_new(); gtk_widget_show(sep); gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 5); vbox = gtk_vbox_new(FALSE, 1); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5); hbox2 = gtk_hbox_new(FALSE, 1); gtk_widget_show(hbox2); gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0); speaker_button = gtk_button_new(); image = CreateWidgetFromXpm(speaker_button, master_muted == 0 ? xpm_speaker : xpm_speaker_muted); gtk_container_add(GTK_CONTAINER(speaker_button), image);#if 0 gdk_pixmap_unref((GdkPixmap *)image);#endif gtk_widget_show(speaker_button); gtk_signal_connect(GTK_OBJECT(speaker_button), "clicked", GTK_SIGNAL_FUNC(on_speaker_clicked), NULL); gtk_box_pack_start(GTK_BOX(hbox2), speaker_button, FALSE, FALSE, 5); GtkObject *vol_adj; vol_adj = gtk_adjustment_new(master_volume, 0.0, 100.0, 5.0, 25.0, 0.0); GtkWidget *vol; vol = gtk_hscale_new(GTK_ADJUSTMENT(vol_adj)); gtk_scale_set_digits(GTK_SCALE(vol),0); gtk_scale_set_draw_value(GTK_SCALE(vol), 0); gtk_range_set_adjustment ( GTK_RANGE( vol ), GTK_ADJUSTMENT(vol_adj));#ifdef HAVE_GTK_2_0 gtk_widget_set_size_request(GTK_WIDGET(vol), 100, -1); gtk_range_set_update_policy(GTK_RANGE(vol), GTK_UPDATE_DISCONTINUOUS);#else gtk_range_slider_update ( GTK_RANGE( vol ) ); gtk_range_clear_background ( GTK_RANGE( vol ) ); //gtk_range_draw_background ( GTK_RANGE( vol ) );#endif#ifdef HAVE_GTK_2_0 // We don't need this - I'm not 100% sure why, but we don't... gtk_signal_connect(vol_adj, "value_changed", GTK_SIGNAL_FUNC(on_volume_adjusted), vol);#else gtk_signal_connect(GTK_OBJECT(vol), "button_release_event", GTK_SIGNAL_FUNC(on_volume_adjusted), vol);#endif gtk_widget_show(vol); volume_slider = vol; gtk_box_pack_start(GTK_BOX(hbox2), vol, TRUE, TRUE, 0); // boxes for Looped label sep = gtk_vseparator_new(); gtk_widget_show(sep); gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 5); vbox = gtk_vbox_new(TRUE, 1); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5); hbox2 = gtk_hbox_new(TRUE, 1); gtk_widget_show(hbox2); gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0); GtkWidget *loop_enabled_button; loop_enabled_button = gtk_check_button_new_with_label("Looped"); gtk_box_pack_start(GTK_BOX(hbox2), loop_enabled_button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(loop_enabled_button), "toggled", GTK_SIGNAL_FUNC(on_loop_enabled_button), loop_enabled_button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(loop_enabled_button), master_looped); gtk_widget_show(loop_enabled_button); /* * 3rd line - where we are meter... */ hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); GtkObject *time_slider_adj; master_time = 0; time_slider_adj = gtk_adjustment_new(0.0, 0.0, 100.0, 0.5, 0.5, 0.5); time_slider = gtk_hscale_new(GTK_ADJUSTMENT(time_slider_adj)); gtk_range_set_update_policy(GTK_RANGE(time_slider), GTK_UPDATE_DELAYED); gtk_scale_set_digits(GTK_SCALE(time_slider),0); gtk_scale_set_draw_value(GTK_SCALE(time_slider), 0); gtk_range_set_adjustment(GTK_RANGE(time_slider), GTK_ADJUSTMENT(time_slider_adj));#ifndef HAVE_GTK_2_0 gtk_range_slider_update(GTK_RANGE(time_slider)); gtk_range_clear_background(GTK_RANGE( time_slider));#endif gtk_signal_connect(GTK_OBJECT(time_slider), "button_release_event", GTK_SIGNAL_FUNC(on_time_slider_adjusted), time_slider); gtk_signal_connect(GTK_OBJECT(time_slider), "button_press_event", GTK_SIGNAL_FUNC(on_time_slider_pressed), NULL); gtk_widget_set_sensitive(time_slider, 0); gtk_widget_show(time_slider); gtk_box_pack_start(GTK_BOX(hbox), time_slider, TRUE, TRUE, 0); /* * 4th line - time display... */ hbox = gtk_hbox_new(FALSE, 1); gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); time_disp = gtk_label_new("0:00:00"); gtk_widget_ref(time_disp); gtk_widget_show(time_disp); gtk_box_pack_start(GTK_BOX(hbox), time_disp, TRUE, TRUE,0); // session information for (int ix = 0; ix < 4; ix++) { hbox = gtk_hbox_new(FALSE, 1); gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); session_desc[ix] = gtk_label_new(""); gtk_widget_ref(session_desc[ix]); gtk_widget_show(session_desc[ix]); gtk_box_pack_start(GTK_BOX(hbox), session_desc[ix], TRUE, TRUE,0); } gtk_timeout_add(500, main_timer, main_window); gtk_container_add(GTK_CONTAINER(main_window), main_vbox); gtk_widget_show(main_window); /* * set up drag and drop */ gtk_drag_dest_set(main_window, GTK_DEST_DEFAULT_ALL, drop_types, 1, GDK_ACTION_COPY); gtk_signal_connect(GTK_OBJECT(main_window), "drag_data_received", GTK_SIGNAL_FUNC(on_drag_data_received), main_window); /* * any args passed ? */ argc--; argv++; if (argc > 0) { start_session_from_name(*argv); } gtk_main(); exit(0);}/* end gui_main.cpp */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -