summaryrefslogtreecommitdiff
path: root/interface.c
blob: 38a936e980ee8bda01557895f11dff53ee0edbb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/*
 * DO NOT EDIT THIS FILE - it is generated by Glade.
 */

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"

#define GLADE_HOOKUP_OBJECT(component,widget,name) \
  g_object_set_data_full (G_OBJECT (component), name, \
    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)

#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  g_object_set_data (G_OBJECT (component), name, widget)

GtkWidget*
create_mainwin (void)
{
  GtkWidget *mainwin;
  GtkWidget *vbox1;
  GtkWidget *hbox1;
  GtkWidget *toolbar1;
  GtkIconSize tmp_toolbar_icon_size;
  GtkWidget *toolitem1;
  GtkWidget *addbtn;
  GtkWidget *toolitem2;
  GtkWidget *playbtn;
  GtkWidget *toolitem3;
  GtkWidget *button3;
  GtkWidget *vbox2;
  GtkWidget *label1;
  GtkWidget *volume;
  GtkWidget *vbox3;
  GtkWidget *label2;
  GtkWidget *playpos;
  GtkWidget *_;
  GtkWidget *playlist;
  GtkWidget *playscroll;

  mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (mainwin), "DeaDBeeF");
  gtk_window_set_default_size (GTK_WINDOW (mainwin), 750, 650);

  vbox1 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox1);
  gtk_container_add (GTK_CONTAINER (mainwin), vbox1);

  hbox1 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox1);
  gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);

  toolbar1 = gtk_toolbar_new ();
  gtk_widget_show (toolbar1);
  gtk_box_pack_start (GTK_BOX (hbox1), toolbar1, TRUE, TRUE, 0);
  gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_BOTH);
  tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1));

  toolitem1 = (GtkWidget*) gtk_tool_item_new ();
  gtk_widget_show (toolitem1);
  gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);

  addbtn = gtk_button_new_with_mnemonic ("Add");
  gtk_widget_show (addbtn);
  gtk_container_add (GTK_CONTAINER (toolitem1), addbtn);

  toolitem2 = (GtkWidget*) gtk_tool_item_new ();
  gtk_widget_show (toolitem2);
  gtk_container_add (GTK_CONTAINER (toolbar1), toolitem2);

  playbtn = gtk_button_new_with_mnemonic ("Play");
  gtk_widget_show (playbtn);
  gtk_container_add (GTK_CONTAINER (toolitem2), playbtn);

  toolitem3 = (GtkWidget*) gtk_tool_item_new ();
  gtk_widget_show (toolitem3);
  gtk_container_add (GTK_CONTAINER (toolbar1), toolitem3);

  button3 = gtk_button_new_with_mnemonic ("Stop");
  gtk_widget_show (button3);
  gtk_container_add (GTK_CONTAINER (toolitem3), button3);

  vbox2 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox2);
  gtk_box_pack_start (GTK_BOX (hbox1), vbox2, FALSE, TRUE, 0);

  label1 = gtk_label_new ("Volume");
  gtk_widget_show (label1);
  gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0);

  volume = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (100, 0, 100, 0, 0, 0)));
  gtk_widget_show (volume);
  gtk_box_pack_start (GTK_BOX (vbox2), volume, TRUE, TRUE, 0);
  gtk_widget_set_size_request (volume, 100, -1);
  gtk_scale_set_draw_value (GTK_SCALE (volume), FALSE);

  vbox3 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox3);
  gtk_box_pack_start (GTK_BOX (hbox1), vbox3, FALSE, TRUE, 0);

  label2 = gtk_label_new ("Play position");
  gtk_widget_show (label2);
  gtk_box_pack_start (GTK_BOX (vbox3), label2, FALSE, FALSE, 0);

  playpos = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1000, 0, 0, 0)));
  gtk_widget_show (playpos);
  gtk_box_pack_start (GTK_BOX (vbox3), playpos, TRUE, TRUE, 0);
  gtk_widget_set_size_request (playpos, 200, -1);
  gtk_scale_set_draw_value (GTK_SCALE (playpos), FALSE);

  _ = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (_);
  gtk_box_pack_start (GTK_BOX (vbox1), _, TRUE, TRUE, 0);

  playlist = gtk_drawing_area_new ();
  gtk_widget_show (playlist);
  gtk_box_pack_start (GTK_BOX (_), playlist, TRUE, TRUE, 0);
  gtk_widget_set_events (playlist, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);

  playscroll = gtk_vscrollbar_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1, 1, 0, 0)));
  gtk_widget_show (playscroll);
  gtk_box_pack_start (GTK_BOX (_), playscroll, FALSE, FALSE, 0);

  g_signal_connect ((gpointer) mainwin, "destroy",
                    G_CALLBACK (gtk_main_quit),
                    NULL);
  g_signal_connect ((gpointer) addbtn, "clicked",
                    G_CALLBACK (on_addbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) playbtn, "clicked",
                    G_CALLBACK (on_playbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) volume, "value_changed",
                    G_CALLBACK (on_volume_value_changed),
                    NULL);
  g_signal_connect ((gpointer) playpos, "value_changed",
                    G_CALLBACK (on_playpos_value_changed),
                    NULL);
  g_signal_connect ((gpointer) playlist, "configure_event",
                    G_CALLBACK (on_playlist_configure_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "expose_event",
                    G_CALLBACK (on_playlist_expose_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "realize",
                    G_CALLBACK (on_playlist_realize),
                    NULL);
  g_signal_connect ((gpointer) playlist, "button_press_event",
                    G_CALLBACK (on_playlist_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) playscroll, "value_changed",
                    G_CALLBACK (on_playscroll_value_changed),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (mainwin, mainwin, "mainwin");
  GLADE_HOOKUP_OBJECT (mainwin, vbox1, "vbox1");
  GLADE_HOOKUP_OBJECT (mainwin, hbox1, "hbox1");
  GLADE_HOOKUP_OBJECT (mainwin, toolbar1, "toolbar1");
  GLADE_HOOKUP_OBJECT (mainwin, toolitem1, "toolitem1");
  GLADE_HOOKUP_OBJECT (mainwin, addbtn, "addbtn");
  GLADE_HOOKUP_OBJECT (mainwin, toolitem2, "toolitem2");
  GLADE_HOOKUP_OBJECT (mainwin, playbtn, "playbtn");
  GLADE_HOOKUP_OBJECT (mainwin, toolitem3, "toolitem3");
  GLADE_HOOKUP_OBJECT (mainwin, button3, "button3");
  GLADE_HOOKUP_OBJECT (mainwin, vbox2, "vbox2");
  GLADE_HOOKUP_OBJECT (mainwin, label1, "label1");
  GLADE_HOOKUP_OBJECT (mainwin, volume, "volume");
  GLADE_HOOKUP_OBJECT (mainwin, vbox3, "vbox3");
  GLADE_HOOKUP_OBJECT (mainwin, label2, "label2");
  GLADE_HOOKUP_OBJECT (mainwin, playpos, "playpos");
  GLADE_HOOKUP_OBJECT (mainwin, _, "_");
  GLADE_HOOKUP_OBJECT (mainwin, playlist, "playlist");
  GLADE_HOOKUP_OBJECT (mainwin, playscroll, "playscroll");

  return mainwin;
}