Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠ»Π΅Π΅ΡΠ°
ΠΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ: ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ. Π‘ΡΠ°Π·Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΡΡΡΡΠΏΡ 10 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΎΡ ΠΊΡΠ°Ρ ΠΎΠΊΠ½Π°. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. VERTICAL — Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. G_signal_connect (adj_progress, «value-changed», G_CALLBACK… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠ»Π΅Π΅ΡΠ° (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ΄ΠΈΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π° Π²ΡΠΎΡΠΎΠΉ — ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ. Π€Π°ΠΉΠ» Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ playerinterf. c, ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ gsprog.c.
ΠΠ»Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ Π±ΡΠ΄Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΊΡΡΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠ»Π΅Π΅ΡΠ°.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
#include //ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ i/o.
#include //Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
#include //Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ gstreamer.
#include «gsprog.c» //ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
//ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ±ΠΎΡΠ° ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° static void file_select (GtkFileChooser *selector, gpointer data);
//ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
GtkAdjustment *adj[7], *adj_progress;
GtkWidget *window, *hbox1, *hbox2, *hbox3, *hbox4, *vbox;
GtkWidget *scale[7], *check, *explorer, *progress, *file_filter, *time_display;
GtkToolItem *btnPlay, *btnStop, *btnPause;
ToolItem — ΡΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΠ·Ρ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
Widget — ΡΠ°ΠΌΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΎΠΊΠ½Π°, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ. Π΄.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
int main (int argc, char **argv).
{.
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ GTK+ ΠΈ GStreamer.
gtk_init (&argc, &argv);
gst_init (&argc, &argv);
ΠΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΈ ΡΡΡΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π°ΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
/*——————————————————————————;
Π‘ΠΠΠΠΠΠ ΠΠΠΠΠΠΠ’Π« ΠΠΠ’ΠΠ Π€ΠΠΠ‘Π.
———————————————————————————*/.
//Π½Π°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
//ΡΡΠ°Π·Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΡΡΡΡΠΏΡ 10 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΎΡ ΠΊΡΠ°Ρ ΠΎΠΊΠ½Π°.
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
//ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΡΠ΄Π° Π²ΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ.
//VERTICAL — Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ.
//ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ 10 ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² ΡΡΠΎΠΌ //ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
//ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠ»Π°.
hbox4 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 70);
//ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ play, stop ΠΈ pause.
hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
//ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ° ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΡΡΠ΅ΠΊΡ, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΡΡΠ΅ΠΊΡΠ° phaser ΠΈ //Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ.
hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 15);
//ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠΎΠ² ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ°.
hbox3 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20);
//Π·Π°Π΄Π°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
gtk_widget_set_size_request (vbox, 500, 300);
//ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΠΊΠ½Π° Ρ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠΎΠΌ.
gtk_widget_set_size_request (hbox3, 100, 200);
//ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° phaser.
check = gtk_check_button_new_with_label («phaser»);
//ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠΈ Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ.
GtkWidget *volume;
volume = gtk_volume_button_new ();
//ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π°.
explorer = gtk_file_chooser_button_new («select file», GTK_FILE_CHOOSER_ACTION_OPEN);
//ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΡΠΎΠΏ ΠΈ ΠΏΠ°ΡΠ·Π°.
btnPlay = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
btnStop = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_STOP);
btnPause = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_PAUSE);
//ΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΌΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈ ΡΠ°ΡΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΊΠ½Π°.
gtk_widget_set_hexpand (btnPlay, TRUE);
gtk_widget_set_hexpand (btnStop, TRUE);
gtk_widget_set_hexpand (btnPause, TRUE);
//ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π»ΡΠΉΠ±Π» Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ΅ΠΊΠ°.
time_display = gtk_label_new («0:00 / 0:00»);
//Π·Π°Π΄Π°Π΅ΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ (value, lower, upper, step_incr, page_incr, page_size).
adj_progress = gtk_adjustment_new (0.0, 0.0, 100.0, 0.1, 1.0, 0.0);
//ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΡ.
progress = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, adj_progress);
//ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ°.
gtk_widget_set_hexpand (progress, TRUE);
//ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
gtk_widget_set_hexpand (explorer, TRUE);
//Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°.
gtk_scale_set_draw_value (GTK_SCALE (progress), FALSE);
//ΡΠΈΠ»ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
file_filter = GTK_WIDGET (gtk_file_filter_new ());
gtk_file_filter_set_name (GTK_FILE_FILTER (explorer), «Music»);
//Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ.
gtk_file_filter_add_pattern (GTK_FILE_FILTER (file_filter), «*.flac»);
gtk_file_filter_add_pattern (GTK_FILE_FILTER (file_filter), «*.mp3»);
//ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠ»ΡΡΡΠ°.
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (explorer), GTK_FILE_FILTER (file_filter));
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (explorer), DEFAULT_FILE);
//Π·Π°ΡΠΈΡΠΎΠ²ΠΊΠ° 7 ΠΏΠΎΠ»ΠΎΡ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ°.
int i; ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π΅Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ.
for (i = 0; i < 7; i ++) {.
//7 ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡ -12 Π΄ΠΎ 10 Ρ ΡΠ°Π³ΠΎΠΌ 1.0.
adj[i] = gtk_adjustment_new (0.0, -12.0, 10.0, 1.0, 1.0, 0.0);
//7 ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠΎΠ² Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ.
scale[i] = gtk_scale_new (GTK_ORIENTATION_VERTICAL, adj[i]);
//ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΡΠ²Π΅ΡΡ Ρ, ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠ½ΠΈΠ·Ρ.
gtk_range_set_inverted (GTK_RANGE (scale[i]), TRUE);
//ΡΡΠ°Π·Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ hbox3.
gtk_container_add (GTK_CONTAINER (hbox3), scale[i]);
//ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠΎΠ².
gtk_widget_set_vexpand (scale[i], TRUE);
gtk_widget_set_hexpand (scale[i], TRUE);
}.
/*———————————————————————————————————————-;
ΠΠΠΠΠΠΠ―ΠΠ ΠΠΠΠ’ΠΠΠΠΠ , ΠΠΠΠΠ‘ΠΠ ΠΠΠΠΠΠ ΠΠ Π€ΠΠ ΠΠ£.
————————————————————————————————————————-*/.
//ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π°Π½ΠΎΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ.
gtk_container_add (GTK_CONTAINER (hbox1), btnPlay);
gtk_container_add (GTK_CONTAINER (hbox1), btnPause);
gtk_container_add (GTK_CONTAINER (hbox1), btnStop);
gtk_container_add (GTK_CONTAINER (hbox2), time_display);
gtk_container_add (GTK_CONTAINER (hbox2), progress);
gtk_container_add (GTK_CONTAINER (hbox2), check);
gtk_container_add (GTK_CONTAINER (hbox2), volume);
gtk_container_add (GTK_CONTAINER (hbox4), explorer);
gtk_container_add (GTK_CONTAINER (vbox), hbox4);
gtk_container_add (GTK_CONTAINER (vbox), hbox2);
gtk_container_add (GTK_CONTAINER (vbox), hbox3);
gtk_container_add (GTK_CONTAINER (vbox), hbox1);
//ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΎΠΊΠ½ΠΎ.
gtk_container_add (GTK_CONTAINER (window), vbox);
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π±Π΅Π· ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎ ΡΠ°ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΡΠ΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
/*—————————————————————————————————————————;
ΠΠΠ ΠΠΠΠ’ΠΠ Π‘ΠΠΠΠΠΠΠ, Π‘ΠΠ―ΠΠ¬ ΠΠΠ’ΠΠ Π€ΠΠΠ‘Π Π‘ GSTREAMER.
———————————————————————————————————————————*/.
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ° ΠΏΠΎ ΡΡΠ΅ΠΊΡ.
g_signal_connect (adj_progress, «value-changed», G_CALLBACK (gstreamer_seek_to_time), NULL);
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ ΡΠΈΠ³Π½Π°Π»Π°.
g_signal_connect (volume, «value-changed», G_CALLBACK (gstreamer_volume), NULL);
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π°.
g_signal_connect (explorer, «selection_changed», G_CALLBACK (file_select), NULL);
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΊΠ²Π°Π»Π°ΠΉΠ·Π΅ΡΠ°.
int n;
gpointer num;
for (n = 0; n < 7; n ++) {.
num = GINT_TO_POINTER (n);
//ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅Π½ΠΈΡ ΡΠ½ΡΡΠΎΠ΅ Ρ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ° g_signal_connect (adj[n], «value-changed», G_CALLBACK (gstreamer_equalizer), num);
}.
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΡΠ΅ΠΊΡΠ° phaser, ΡΠ»Π΅Π΄ΠΈΡ, Π²ΠΊΠ»ΡΡΠ΅Π½ Π»ΠΈ ΠΎΠ½.
g_signal_connect (check, «toggled», G_CALLBACK (gstreamer_toggle), NULL);
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ.
g_signal_connect (btnStop, «clicked», G_CALLBACK (gstreamer_stop), NULL);
g_signal_connect (btnPause, «clicked», G_CALLBACK (gstreamer_pause), NULL);
g_signal_connect (btnPlay, «clicked», G_CALLBACK (gstreamer_play), NULL);
//ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²ΡΠ΅ Π½Π° ΡΠΎΡΠΌΠ΅.
gtk_widget_show_all (window);
//Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ gstreamer.
gstreamer ();
return 0;
}.
//ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π²ΡΠ±ΠΎΡ ΡΠ°ΠΉΠ»Π°.
static void file_select (GtkFileChooser *selector, gpointer data) {.
char *path; //ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ.
path = gtk_file_chooser_get_filename (selector);
g_print («file location:%s «, path);
if (path ≠ NULL) {.
//Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
gstreamer_stop (); //ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ°.
g_object_set (G_OBJECT (filesrc), «location», path, NULL); //ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
gstreamer_stop ();
g_object_set (G_OBJECT (adj_progress), «value», 0.0, NULL);
gstreamer_play (); //Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅.
}.
}.
ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΠ»Π΅Π΅ΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΏ. 3.3.