ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

РСализация интСрфСйса ΠΏΠ»Π΅Π΅Ρ€Π°

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствий: Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ для воспроизвСдСния ΠΈ. Π‘Ρ€Π°Π·Ρƒ устанавливаСм отступы 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.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ