1 | #include <gtk/gtk.h> |
2 | |
3 | static void |
4 | ended (GObject *object) |
5 | { |
6 | g_object_unref (object); |
7 | } |
8 | |
9 | static void |
10 | play (const char *name) |
11 | { |
12 | char *path; |
13 | GtkMediaStream *stream; |
14 | |
15 | path = g_build_filename (first_element: "tests" , name, NULL); |
16 | |
17 | stream = gtk_media_file_new_for_filename (filename: path); |
18 | gtk_media_stream_set_volume (self: stream, volume: 1.0); |
19 | |
20 | gtk_media_stream_play (self: stream); |
21 | |
22 | g_signal_connect (stream, "notify::ended" , G_CALLBACK (ended), NULL); |
23 | |
24 | g_free (mem: path); |
25 | } |
26 | |
27 | static void |
28 | enter (GtkButton *button) |
29 | { |
30 | play (name: "service-login.oga" ); |
31 | } |
32 | |
33 | static void |
34 | leave (GtkButton *button) |
35 | { |
36 | play (name: "service-logout.oga" ); |
37 | } |
38 | |
39 | int main (int argc, char *argv[]) |
40 | { |
41 | GtkWidget *window; |
42 | GtkWidget *box; |
43 | GtkWidget *button; |
44 | |
45 | gtk_init (); |
46 | |
47 | window = gtk_window_new (); |
48 | |
49 | box = gtk_box_new (orientation: GTK_ORIENTATION_HORIZONTAL, spacing: 10); |
50 | gtk_widget_set_halign (widget: box, align: GTK_ALIGN_CENTER); |
51 | gtk_widget_set_valign (widget: box, align: GTK_ALIGN_CENTER); |
52 | gtk_window_set_child (GTK_WINDOW (window), child: box); |
53 | |
54 | button = gtk_button_new_with_label (label: "Α" ); |
55 | g_signal_connect (button, "clicked" , G_CALLBACK (enter), NULL); |
56 | gtk_box_append (GTK_BOX (box), child: button); |
57 | |
58 | button = gtk_button_new_with_label (label: "Ω" ); |
59 | g_signal_connect (button, "clicked" , G_CALLBACK (leave), NULL); |
60 | gtk_box_append (GTK_BOX (box), child: button); |
61 | |
62 | gtk_window_present (GTK_WINDOW (window)); |
63 | |
64 | while (1) |
65 | g_main_context_iteration (NULL, FALSE); |
66 | |
67 | return 0; |
68 | } |
69 | |