1 /* GSequencer - Advanced GTK Sequencer
2 * Copyright (C) 2005-2021 Joël Krähemann
3 *
4 * This file is part of GSequencer.
5 *
6 * GSequencer is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * GSequencer is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with GSequencer. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #include <ags/X/ags_server_preferences.h>
21 #include <ags/X/ags_server_preferences_callbacks.h>
22
23 #include <ags/X/ags_window.h>
24 #include <ags/X/ags_preferences.h>
25
26 #include <ags/i18n.h>
27
28 void ags_server_preferences_class_init(AgsServerPreferencesClass *server_preferences);
29 void ags_server_preferences_connectable_interface_init(AgsConnectableInterface *connectable);
30 void ags_server_preferences_applicable_interface_init(AgsApplicableInterface *applicable);
31 void ags_server_preferences_init(AgsServerPreferences *server_preferences);
32
33 void ags_server_preferences_connect(AgsConnectable *connectable);
34 void ags_server_preferences_disconnect(AgsConnectable *connectable);
35
36 void ags_server_preferences_set_update(AgsApplicable *applicable, gboolean update);
37 void ags_server_preferences_apply(AgsApplicable *applicable);
38 void ags_server_preferences_reset(AgsApplicable *applicable);
39
40 /**
41 * SECTION:ags_server_preferences
42 * @short_description: A composite widget to do server related preferences
43 * @title: AgsServerPreferences
44 * @section_id:
45 * @include: ags/X/ags_server_preferences.h
46 *
47 * #AgsServerPreferences enables you to make server related preferences.
48 */
49
50 static gpointer ags_server_preferences_parent_class = NULL;
51
52 GType
ags_server_preferences_get_type(void)53 ags_server_preferences_get_type(void)
54 {
55 static volatile gsize g_define_type_id__volatile = 0;
56
57 if(g_once_init_enter (&g_define_type_id__volatile)){
58 GType ags_type_server_preferences = 0;
59
60 static const GTypeInfo ags_server_preferences_info = {
61 sizeof (AgsServerPreferencesClass),
62 NULL, /* base_init */
63 NULL, /* base_finalize */
64 (GClassInitFunc) ags_server_preferences_class_init,
65 NULL, /* class_finalize */
66 NULL, /* class_data */
67 sizeof (AgsServerPreferences),
68 0, /* n_preallocs */
69 (GInstanceInitFunc) ags_server_preferences_init,
70 };
71
72 static const GInterfaceInfo ags_connectable_interface_info = {
73 (GInterfaceInitFunc) ags_server_preferences_connectable_interface_init,
74 NULL, /* interface_finalize */
75 NULL, /* interface_data */
76 };
77
78 static const GInterfaceInfo ags_applicable_interface_info = {
79 (GInterfaceInitFunc) ags_server_preferences_applicable_interface_init,
80 NULL, /* interface_finalize */
81 NULL, /* interface_data */
82 };
83
84 ags_type_server_preferences = g_type_register_static(GTK_TYPE_BOX,
85 "AgsServerPreferences", &ags_server_preferences_info,
86 0);
87
88 g_type_add_interface_static(ags_type_server_preferences,
89 AGS_TYPE_CONNECTABLE,
90 &ags_connectable_interface_info);
91
92 g_type_add_interface_static(ags_type_server_preferences,
93 AGS_TYPE_APPLICABLE,
94 &ags_applicable_interface_info);
95
96 g_once_init_leave(&g_define_type_id__volatile, ags_type_server_preferences);
97 }
98
99 return g_define_type_id__volatile;
100 }
101
102 void
ags_server_preferences_class_init(AgsServerPreferencesClass * server_preferences)103 ags_server_preferences_class_init(AgsServerPreferencesClass *server_preferences)
104 {
105 ags_server_preferences_parent_class = g_type_class_peek_parent(server_preferences);
106 }
107
108 void
ags_server_preferences_connectable_interface_init(AgsConnectableInterface * connectable)109 ags_server_preferences_connectable_interface_init(AgsConnectableInterface *connectable)
110 {
111 connectable->is_ready = NULL;
112 connectable->is_connected = NULL;
113 connectable->connect = ags_server_preferences_connect;
114 connectable->disconnect = ags_server_preferences_disconnect;
115 }
116
117 void
ags_server_preferences_applicable_interface_init(AgsApplicableInterface * applicable)118 ags_server_preferences_applicable_interface_init(AgsApplicableInterface *applicable)
119 {
120 applicable->set_update = ags_server_preferences_set_update;
121 applicable->apply = ags_server_preferences_apply;
122 applicable->reset = ags_server_preferences_reset;
123 }
124
125 void
ags_server_preferences_init(AgsServerPreferences * server_preferences)126 ags_server_preferences_init(AgsServerPreferences *server_preferences)
127 {
128 GtkGrid *grid;
129 GtkLabel *label;
130
131 gtk_orientable_set_orientation(GTK_ORIENTABLE(server_preferences),
132 GTK_ORIENTATION_VERTICAL);
133
134 grid = (GtkGrid *) gtk_grid_new();
135 gtk_box_pack_start(GTK_BOX(server_preferences),
136 GTK_WIDGET(grid),
137 FALSE, FALSE,
138 2);
139
140 server_preferences->start = (GtkCheckButton *) gtk_check_button_new_with_label(i18n("start server"));
141
142 gtk_widget_set_valign(server_preferences->start,
143 GTK_ALIGN_FILL);
144 gtk_widget_set_halign(server_preferences->start,
145 GTK_ALIGN_FILL);
146
147 gtk_grid_attach(grid,
148 GTK_WIDGET(server_preferences->start),
149 0, 0,
150 2, 1);
151
152 gtk_widget_set_sensitive((GtkWidget *) server_preferences->start,
153 FALSE);
154
155 /* address */
156 label = (GtkLabel *) g_object_new(GTK_TYPE_LABEL,
157 "label", i18n("address"),
158 "xalign", 0.0,
159 NULL);
160
161 gtk_widget_set_valign(label,
162 GTK_ALIGN_FILL);
163 gtk_widget_set_halign(label,
164 GTK_ALIGN_FILL);
165
166 gtk_grid_attach(grid,
167 GTK_WIDGET(label),
168 0, 1,
169 1, 1);
170
171 server_preferences->address = (GtkEntry *) gtk_entry_new();
172 gtk_grid_attach(grid,
173 GTK_WIDGET(server_preferences->address),
174 1, 1,
175 1, 1);
176 gtk_widget_set_sensitive((GtkWidget *) server_preferences->address,
177 FALSE);
178
179 /* port */
180 label = (GtkLabel *) g_object_new(GTK_TYPE_LABEL,
181 "label", i18n("port"),
182 "xalign", 0.0,
183 NULL);
184
185 gtk_widget_set_valign(label,
186 GTK_ALIGN_FILL);
187 gtk_widget_set_halign(label,
188 GTK_ALIGN_FILL);
189
190 gtk_grid_attach(grid,
191 GTK_WIDGET(label),
192 0, 2,
193 1, 1);
194
195 server_preferences->port = (GtkEntry *) gtk_entry_new();
196
197 gtk_widget_set_valign(server_preferences->port,
198 GTK_ALIGN_FILL);
199 gtk_widget_set_halign(server_preferences->port,
200 GTK_ALIGN_FILL);
201
202 gtk_grid_attach(grid,
203 GTK_WIDGET(server_preferences->port),
204 1, 2,
205 1, 1);
206
207 gtk_widget_set_sensitive((GtkWidget *) server_preferences->port,
208 FALSE);
209
210 /* username */
211 label = (GtkLabel *) g_object_new(GTK_TYPE_LABEL,
212 "label", i18n("username"),
213 "xalign", 0.0,
214 NULL);
215
216 gtk_widget_set_valign(label,
217 GTK_ALIGN_FILL);
218 gtk_widget_set_halign(label,
219 GTK_ALIGN_FILL);
220
221 gtk_grid_attach(grid,
222 GTK_WIDGET(label),
223 0, 3,
224 1, 1);
225
226 server_preferences->username = (GtkEntry *) gtk_entry_new();
227
228 gtk_widget_set_valign(server_preferences->username,
229 GTK_ALIGN_FILL);
230 gtk_widget_set_halign(server_preferences->username,
231 GTK_ALIGN_FILL);
232
233 gtk_grid_attach(grid,
234 GTK_WIDGET(server_preferences->username),
235 1, 3,
236 1, 1);
237
238 gtk_widget_set_sensitive((GtkWidget *) server_preferences->username,
239 FALSE);
240
241 /* password */
242 label = (GtkLabel *) g_object_new(GTK_TYPE_LABEL,
243 "label", i18n("password"),
244 "xalign", 0.0,
245 NULL);
246
247 gtk_widget_set_valign(label,
248 GTK_ALIGN_FILL);
249 gtk_widget_set_halign(label,
250 GTK_ALIGN_FILL);
251
252 gtk_grid_attach(grid,
253 GTK_WIDGET(label),
254 0, 4,
255 1, 1);
256
257 server_preferences->password = (GtkEntry *) gtk_entry_new();
258
259 gtk_widget_set_valign(server_preferences->password,
260 GTK_ALIGN_FILL);
261 gtk_widget_set_halign(server_preferences->password,
262 GTK_ALIGN_FILL);
263
264 gtk_entry_set_visibility(server_preferences->password,
265 FALSE);
266
267 gtk_grid_attach(grid,
268 GTK_WIDGET(server_preferences->password),
269 1, 4,
270 1, 1);
271
272 gtk_widget_set_sensitive((GtkWidget *) server_preferences->password,
273 FALSE);
274 }
275
276 void
ags_server_preferences_connect(AgsConnectable * connectable)277 ags_server_preferences_connect(AgsConnectable *connectable)
278 {
279 //TODO:JK: implement me
280 }
281
282 void
ags_server_preferences_disconnect(AgsConnectable * connectable)283 ags_server_preferences_disconnect(AgsConnectable *connectable)
284 {
285 //TODO:JK: implement me
286 }
287
288
289 void
ags_server_preferences_set_update(AgsApplicable * applicable,gboolean update)290 ags_server_preferences_set_update(AgsApplicable *applicable, gboolean update)
291 {
292 //TODO:JK: implement me
293 }
294
295 void
ags_server_preferences_apply(AgsApplicable * applicable)296 ags_server_preferences_apply(AgsApplicable *applicable)
297 {
298 //TODO:JK: implement me
299 }
300
301 void
ags_server_preferences_reset(AgsApplicable * applicable)302 ags_server_preferences_reset(AgsApplicable *applicable)
303 {
304 //TODO:JK: implement me
305 }
306
307 /**
308 * ags_server_preferences_new:
309 *
310 * Create a new instance of #AgsServerPreferences
311 *
312 * Returns: the new #AgsServerPreferences
313 *
314 * Since: 3.0.0
315 */
316 AgsServerPreferences*
ags_server_preferences_new()317 ags_server_preferences_new()
318 {
319 AgsServerPreferences *server_preferences;
320
321 server_preferences = (AgsServerPreferences *) g_object_new(AGS_TYPE_SERVER_PREFERENCES,
322 NULL);
323
324 return(server_preferences);
325 }
326