/**
player.c文件
gcc hellogtk.c -o hellogtk `pkg-config --cflags --libs gtk+-2.0 --libs gstreamer-0.10`
*/
#include <gst/gst.h>
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#include <gst/interfaces/xoverlay.h>
#include <string.h>
#include "player.h"
static GtkWidget *main_window;
static GtkWidget *play_button;
static GtkWidget *skip_button;
static GtkWidget *pause_button;
static GtkWidget *stop_button;
static GtkWidget *status_label;
static GtkWidget *song_label;
static GtkWidget *time_label;
static GtkWidget *seek_scale;
static GtkWidget *video_output;
static gpointer window;
static GstElement *play = NULL;
static GstElement *bin;
static guint timeout_source = 0;
static guint skip_time_source = 0;
static char *current_filename = NULL;
gboolean no_seek = FALSE;
gboolean is_pause_pressed = FALSE;
gboolean is_skip = FALSE;
// 打开文件
static void file_open(GtkAction *action)
{
GtkWidget *file_chooser = gtk_file_chooser_dialog_new(
"Open File", GTK_WINDOW(main_window),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run(GTK_DIALOG(file_chooser)) == GTK_RESPONSE_ACCEPT) {
char *filename;
filename = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(file_chooser));
// g_signal_emit_by_name(G_OBJECT(stop_button), "clicked");
if (current_filename) g_free(current_filename);
current_filename = filename;
g_print("current_filename===>%s",current_filename);
//判断pause按钮是否按下
gtk_widget_set_sensitive(GTK_WIDGET(pause_button), FALSE);
//chose the song to play
if (load_file(filename))
gtk_widget_set_sensitive(GTK_WIDGET(play_button), TRUE);
}
gtk_widget_destroy(file_chooser);
}
// 退出
static void file_quit(GtkAction *action)
{
gtk_main_quit();
}
// 关于
static void help_about(GtkAction *action)
{
GtkWidget *about_dialog = gtk_about_dialog_new();
gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about_dialog), "MediaPlayer");
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about_dialog), "0.0.0");
gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about_dialog), "Copyright @ 2011, Figo");
gtk_dialog_run(GTK_DIALOG(about_dialog));
gtk_widget_destroy(about_dialog);
}
static GtkActionEntry mainwindow_action_entries[] = {
{ "FileMenu", "NULL", "文件" },
{
"OpenFile",
GTK_STOCK_OPEN,
"打开(O)",
"<control>O",
"Open a file for playback",
G_CALLBACK(file_open)
},
{
"QuitPlayer",
GTK_STOCK_QUIT,
"退出(Q)",
"<control>Q",
"Quit the media player",
G_CALLBACK(file_quit)
},
{ "HelpMenu", "NULL", "帮助" },
{
"HelpAbout",
GTK_STOCK_ABOUT,
"关于",
"",
"About the media player",
G_CALLBACK(help_about)
}
};
GtkWidget *build_gui()
{
GtkWidget *main_vbox;
GtkWidget *status_hbox;
GtkWidget *controls_hbox;
GtkWidget *saturation_controls_hbox;
GtkActionGroup *actiongroup;
GtkUIManager *ui_manager;
actiongroup = gtk_action_group_new("MainwindowActiongroup");
gtk_action_group_add_actions(actiongroup,
mainwindow_action_entries,
G_N_ELEMENTS(mainwindow_action_entries),
NULL);
ui_manager = gtk_ui_manager_new();
gtk_ui_manager_insert_action_group(ui_manager, actiongroup, 0);
gtk_ui_manager_add_ui_from_string(
ui_manager,
"<ui>"
" <menubar name='MainMenu'>"
player.c文件
gcc hellogtk.c -o hellogtk `pkg-config --cflags --libs gtk+-2.0 --libs gstreamer-0.10`
*/
#include <gst/gst.h>
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#include <gst/interfaces/xoverlay.h>
#include <string.h>
#include "player.h"
static GtkWidget *main_window;
static GtkWidget *play_button;
static GtkWidget *skip_button;
static GtkWidget *pause_button;
static GtkWidget *stop_button;
static GtkWidget *status_label;
static GtkWidget *song_label;
static GtkWidget *time_label;
static GtkWidget *seek_scale;
static GtkWidget *video_output;
static gpointer window;
static GstElement *play = NULL;
static GstElement *bin;
static guint timeout_source = 0;
static guint skip_time_source = 0;
static char *current_filename = NULL;
gboolean no_seek = FALSE;
gboolean is_pause_pressed = FALSE;
gboolean is_skip = FALSE;
// 打开文件
static void file_open(GtkAction *action)
{
GtkWidget *file_chooser = gtk_file_chooser_dialog_new(
"Open File", GTK_WINDOW(main_window),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run(GTK_DIALOG(file_chooser)) == GTK_RESPONSE_ACCEPT) {
char *filename;
filename = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(file_chooser));
// g_signal_emit_by_name(G_OBJECT(stop_button), "clicked");
if (current_filename) g_free(current_filename);
current_filename = filename;
g_print("current_filename===>%s",current_filename);
//判断pause按钮是否按下
gtk_widget_set_sensitive(GTK_WIDGET(pause_button), FALSE);
//chose the song to play
if (load_file(filename))
gtk_widget_set_sensitive(GTK_WIDGET(play_button), TRUE);
}
gtk_widget_destroy(file_chooser);
}
// 退出
static void file_quit(GtkAction *action)
{
gtk_main_quit();
}
// 关于
static void help_about(GtkAction *action)
{
GtkWidget *about_dialog = gtk_about_dialog_new();
gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about_dialog), "MediaPlayer");
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about_dialog), "0.0.0");
gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about_dialog), "Copyright @ 2011, Figo");
gtk_dialog_run(GTK_DIALOG(about_dialog));
gtk_widget_destroy(about_dialog);
}
static GtkActionEntry mainwindow_action_entries[] = {
{ "FileMenu", "NULL", "文件" },
{
"OpenFile",
GTK_STOCK_OPEN,
"打开(O)",
"<control>O",
"Open a file for playback",
G_CALLBACK(file_open)
},
{
"QuitPlayer",
GTK_STOCK_QUIT,
"退出(Q)",
"<control>Q",
"Quit the media player",
G_CALLBACK(file_quit)
},
{ "HelpMenu", "NULL", "帮助" },
{
"HelpAbout",
GTK_STOCK_ABOUT,
"关于",
"",
"About the media player",
G_CALLBACK(help_about)
}
};
GtkWidget *build_gui()
{
GtkWidget *main_vbox;
GtkWidget *status_hbox;
GtkWidget *controls_hbox;
GtkWidget *saturation_controls_hbox;
GtkActionGroup *actiongroup;
GtkUIManager *ui_manager;
actiongroup = gtk_action_group_new("MainwindowActiongroup");
gtk_action_group_add_actions(actiongroup,
mainwindow_action_entries,
G_N_ELEMENTS(mainwindow_action_entries),
NULL);
ui_manager = gtk_ui_manager_new();
gtk_ui_manager_insert_action_group(ui_manager, actiongroup, 0);
gtk_ui_manager_add_ui_from_string(
ui_manager,
"<ui>"
" <menubar name='MainMenu'>"