1 /* valaprojectgenerator.vala
2 *
3 * Copyright (C) 2007-2008 Jürg Billeter
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 *
19 * Author:
20 * Jürg Billeter <j@bitron.ch>
21 */
22
23 #include <gen-project/valaprojectgenerator.h>
24 #include <stdlib.h>
25 #include <string.h>
26 #include <glib/gstdio.h>
27 #include <config.h>
28 #include <string.h>
29
30
31 #define VALA_TYPE_PROJECT_TYPE (vala_project_type_get_type ())
32
33 #define VALA_TYPE_PROJECT_LICENSE (vala_project_license_get_type ())
34
35 #define VALA_TYPE_PROJECT_GENERATOR (vala_project_generator_get_type ())
36 #define VALA_PROJECT_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PROJECT_GENERATOR, ValaProjectGenerator))
37 #define VALA_PROJECT_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PROJECT_GENERATOR, ValaProjectGeneratorClass))
38 #define VALA_IS_PROJECT_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PROJECT_GENERATOR))
39 #define VALA_IS_PROJECT_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PROJECT_GENERATOR))
40 #define VALA_PROJECT_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PROJECT_GENERATOR, ValaProjectGeneratorClass))
41
42 typedef struct _ValaProjectGenerator ValaProjectGenerator;
43 typedef struct _ValaProjectGeneratorClass ValaProjectGeneratorClass;
44 typedef struct _ValaProjectGeneratorPrivate ValaProjectGeneratorPrivate;
45
46 typedef enum {
47 VALA_PROJECT_TYPE_CONSOLE_APPLICATION,
48 VALA_PROJECT_TYPE_GTK_APPLICATION
49 } ValaProjectType;
50
51 typedef enum {
52 VALA_PROJECT_LICENSE_GPL2,
53 VALA_PROJECT_LICENSE_GPL3,
54 VALA_PROJECT_LICENSE_LGPL2,
55 VALA_PROJECT_LICENSE_LGPL3
56 } ValaProjectLicense;
57
58 struct _ValaProjectGenerator {
59 GtkDialog parent_instance;
60 ValaProjectGeneratorPrivate * priv;
61 };
62
63 struct _ValaProjectGeneratorClass {
64 GtkDialogClass parent_class;
65 };
66
67
68
69 GType vala_project_type_get_type (void);
70 GType vala_project_license_get_type (void);
71 struct _ValaProjectGeneratorPrivate {
72 GtkFileChooserButton* project_folder_button;
73 GtkComboBox* project_type_combobox;
74 GtkComboBox* license_combobox;
75 GtkEntry* name_entry;
76 GtkEntry* email_entry;
77 char* project_path;
78 char* project_name;
79 char* namespace_name;
80 char* make_name;
81 char* upper_case_make_name;
82 char* real_name;
83 char* email_address;
84 ValaProjectType project_type;
85 ValaProjectLicense project_license;
86 };
87
88 #define VALA_PROJECT_GENERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_PROJECT_GENERATOR, ValaProjectGeneratorPrivate))
89 enum {
90 VALA_PROJECT_GENERATOR_DUMMY_PROPERTY
91 };
92 static ValaProjectGenerator* vala_project_generator_construct (GType object_type);
93 static ValaProjectGenerator* vala_project_generator_new (void);
94 static GtkHBox* vala_project_generator_create_hbox (ValaProjectGenerator* self, const char* title, GtkSizeGroup* size_group);
95 static void vala_project_generator_create_project (ValaProjectGenerator* self);
96 static void vala_project_generator_write_autogen_sh (ValaProjectGenerator* self, GError** error);
97 static void vala_project_generator_write_configure_ac (ValaProjectGenerator* self, GError** error);
98 static void vala_project_generator_write_makefile_am (ValaProjectGenerator* self, GError** error);
99 static char* vala_project_generator_generate_source_file_header (ValaProjectGenerator* self, const char* filename);
100 static void vala_project_generator_write_main_vala (ValaProjectGenerator* self, GError** error);
101 static void vala_project_generator_write_mainwindow_vala (ValaProjectGenerator* self, GError** error);
102 static void vala_project_generator_write_potfiles (ValaProjectGenerator* self, GError** error);
103 static void vala_project_generator_write_linguas (ValaProjectGenerator* self, GError** error);
104 static void vala_project_generator_write_authors (ValaProjectGenerator* self, GError** error);
105 static void vala_project_generator_write_maintainers (ValaProjectGenerator* self, GError** error);
106 static char* vala_project_generator_get_automake_path (ValaProjectGenerator* self);
107 static void vala_project_generator_main (char** args, int args_length1);
108 static GObject * vala_project_generator_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
109 static gpointer vala_project_generator_parent_class = NULL;
110 static void vala_project_generator_finalize (GObject* obj);
111 static GType vala_project_generator_get_type (void);
112 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
113
114
115
116
vala_project_type_get_type(void)117 GType vala_project_type_get_type (void) {
118 static GType vala_project_type_type_id = 0;
119 if (G_UNLIKELY (vala_project_type_type_id == 0)) {
120 static const GEnumValue values[] = {{VALA_PROJECT_TYPE_CONSOLE_APPLICATION, "VALA_PROJECT_TYPE_CONSOLE_APPLICATION", "console-application"}, {VALA_PROJECT_TYPE_GTK_APPLICATION, "VALA_PROJECT_TYPE_GTK_APPLICATION", "gtk-application"}, {0, NULL, NULL}};
121 vala_project_type_type_id = g_enum_register_static ("ValaProjectType", values);
122 }
123 return vala_project_type_type_id;
124 }
125
126
127
vala_project_license_get_type(void)128 GType vala_project_license_get_type (void) {
129 static GType vala_project_license_type_id = 0;
130 if (G_UNLIKELY (vala_project_license_type_id == 0)) {
131 static const GEnumValue values[] = {{VALA_PROJECT_LICENSE_GPL2, "VALA_PROJECT_LICENSE_GPL2", "gpl2"}, {VALA_PROJECT_LICENSE_GPL3, "VALA_PROJECT_LICENSE_GPL3", "gpl3"}, {VALA_PROJECT_LICENSE_LGPL2, "VALA_PROJECT_LICENSE_LGPL2", "lgpl2"}, {VALA_PROJECT_LICENSE_LGPL3, "VALA_PROJECT_LICENSE_LGPL3", "lgpl3"}, {0, NULL, NULL}};
132 vala_project_license_type_id = g_enum_register_static ("ValaProjectLicense", values);
133 }
134 return vala_project_license_type_id;
135 }
136
137
vala_project_generator_construct(GType object_type)138 static ValaProjectGenerator* vala_project_generator_construct (GType object_type) {
139 ValaProjectGenerator * self;
140 self = g_object_newv (object_type, 0, NULL);
141 gtk_window_set_title (((GtkWindow*) (self)), "Vala Project Generator");
142 return self;
143 }
144
145
vala_project_generator_new(void)146 static ValaProjectGenerator* vala_project_generator_new (void) {
147 return vala_project_generator_construct (VALA_TYPE_PROJECT_GENERATOR);
148 }
149
150
vala_project_generator_create_hbox(ValaProjectGenerator * self,const char * title,GtkSizeGroup * size_group)151 static GtkHBox* vala_project_generator_create_hbox (ValaProjectGenerator* self, const char* title, GtkSizeGroup* size_group) {
152 GtkHBox* hbox;
153 GtkLabel* label;
154 GtkLabel* _tmp0;
155 GtkHBox* _tmp1;
156 g_return_val_if_fail (self != NULL, NULL);
157 g_return_val_if_fail (title != NULL, NULL);
158 g_return_val_if_fail (size_group != NULL, NULL);
159 hbox = g_object_ref_sink (((GtkHBox*) (gtk_hbox_new (FALSE, 6))));
160 gtk_box_pack_start (((GtkBox*) ((GTK_VBOX (((GtkDialog*) (self))->vbox)))), ((GtkWidget*) (hbox)), FALSE, FALSE, ((guint) (0)));
161 gtk_widget_show (((GtkWidget*) (hbox)));
162 label = g_object_ref_sink (((GtkLabel*) (gtk_label_new (" "))));
163 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (label)), FALSE, FALSE, ((guint) (0)));
164 gtk_widget_show (((GtkWidget*) (label)));
165 _tmp0 = NULL;
166 label = (_tmp0 = g_object_ref_sink (((GtkLabel*) (gtk_label_new (title)))), (label == NULL ? NULL : (label = (g_object_unref (label), NULL))), _tmp0);
167 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (label)), FALSE, FALSE, ((guint) (0)));
168 g_object_set (((GtkMisc*) (label)), "xalign", ((float) (0)), NULL);
169 gtk_widget_show (((GtkWidget*) (label)));
170 gtk_size_group_add_widget (size_group, ((GtkWidget*) (label)));
171 _tmp1 = NULL;
172 return (_tmp1 = hbox, (label == NULL ? NULL : (label = (g_object_unref (label), NULL))), _tmp1);
173 }
174
175
vala_project_generator_create_project(ValaProjectGenerator * self)176 static void vala_project_generator_create_project (ValaProjectGenerator* self) {
177 GError * inner_error;
178 char* _tmp1;
179 const char* _tmp0;
180 char* _tmp2;
181 GString* project_name_str;
182 GString* make_name_str;
183 GString* namespace_name_str;
184 char* _tmp4;
185 const char* _tmp3;
186 char* _tmp10;
187 char* _tmp9;
188 char* _tmp8;
189 char* _tmp7;
190 char* _tmp6;
191 char* _tmp5;
192 char* _tmp12;
193 const char* _tmp11;
194 char* _tmp13;
195 char* _tmp15;
196 const char* _tmp14;
197 char* _tmp17;
198 const char* _tmp16;
199 g_return_if_fail (self != NULL);
200 inner_error = NULL;
201 _tmp1 = NULL;
202 _tmp0 = NULL;
203 self->priv->project_path = (_tmp1 = (_tmp0 = gtk_file_chooser_get_current_folder (((GtkFileChooser*) (self->priv->project_folder_button))), (_tmp0 == NULL ? NULL : g_strdup (_tmp0))), (self->priv->project_path = (g_free (self->priv->project_path), NULL)), _tmp1);
204 _tmp2 = NULL;
205 self->priv->project_name = (_tmp2 = g_path_get_basename (self->priv->project_path), (self->priv->project_name = (g_free (self->priv->project_name), NULL)), _tmp2);
206 /* only use [a-zA-Z0-9-]* as projectname*/
207 project_name_str = g_string_new ("");
208 make_name_str = g_string_new ("");
209 namespace_name_str = g_string_new ("");
210 {
211 gint i;
212 i = 0;
213 for (; i < g_utf8_strlen (self->priv->project_name, -1); i++) {
214 gunichar c;
215 c = g_utf8_get_char (g_utf8_offset_to_pointer (self->priv->project_name, i));
216 if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) {
217 g_string_append_unichar (project_name_str, c);
218 g_string_append_unichar (make_name_str, c);
219 g_string_append_unichar (namespace_name_str, c);
220 } else {
221 if (c == '-' || c == ' ') {
222 g_string_append_unichar (project_name_str, ((gunichar) ('-')));
223 g_string_append_unichar (make_name_str, ((gunichar) ('_')));
224 }
225 }
226 }
227 }
228 _tmp4 = NULL;
229 _tmp3 = NULL;
230 self->priv->project_name = (_tmp4 = (_tmp3 = project_name_str->str, (_tmp3 == NULL ? NULL : g_strdup (_tmp3))), (self->priv->project_name = (g_free (self->priv->project_name), NULL)), _tmp4);
231 _tmp10 = NULL;
232 _tmp9 = NULL;
233 _tmp8 = NULL;
234 _tmp7 = NULL;
235 _tmp6 = NULL;
236 _tmp5 = NULL;
237 self->priv->namespace_name = (_tmp10 = g_strconcat ((_tmp7 = g_utf8_strup ((_tmp6 = (_tmp5 = g_utf8_offset_to_pointer (namespace_name_str->str, ((glong) (0))), g_strndup (_tmp5, g_utf8_offset_to_pointer (_tmp5, ((glong) (1))) - _tmp5))), -1)), (_tmp9 = (_tmp8 = g_utf8_offset_to_pointer (namespace_name_str->str, ((glong) (1))), g_strndup (_tmp8, g_utf8_offset_to_pointer (_tmp8, g_utf8_strlen (namespace_name_str->str, -1) - 1) - _tmp8))), NULL), (self->priv->namespace_name = (g_free (self->priv->namespace_name), NULL)), _tmp10);
238 _tmp9 = (g_free (_tmp9), NULL);
239 _tmp7 = (g_free (_tmp7), NULL);
240 _tmp6 = (g_free (_tmp6), NULL);
241 _tmp12 = NULL;
242 _tmp11 = NULL;
243 self->priv->make_name = (_tmp12 = (_tmp11 = make_name_str->str, (_tmp11 == NULL ? NULL : g_strdup (_tmp11))), (self->priv->make_name = (g_free (self->priv->make_name), NULL)), _tmp12);
244 _tmp13 = NULL;
245 self->priv->upper_case_make_name = (_tmp13 = g_utf8_strup (self->priv->make_name, -1), (self->priv->upper_case_make_name = (g_free (self->priv->upper_case_make_name), NULL)), _tmp13);
246 self->priv->project_type = ((ValaProjectType) (gtk_combo_box_get_active (self->priv->project_type_combobox)));
247 self->priv->project_license = ((ValaProjectLicense) (gtk_combo_box_get_active (self->priv->license_combobox)));
248 _tmp15 = NULL;
249 _tmp14 = NULL;
250 self->priv->real_name = (_tmp15 = (_tmp14 = gtk_entry_get_text (self->priv->name_entry), (_tmp14 == NULL ? NULL : g_strdup (_tmp14))), (self->priv->real_name = (g_free (self->priv->real_name), NULL)), _tmp15);
251 _tmp17 = NULL;
252 _tmp16 = NULL;
253 self->priv->email_address = (_tmp17 = (_tmp16 = gtk_entry_get_text (self->priv->email_entry), (_tmp16 == NULL ? NULL : g_strdup (_tmp16))), (self->priv->email_address = (g_free (self->priv->email_address), NULL)), _tmp17);
254 {
255 char* _tmp18;
256 char* _tmp19;
257 char* _tmp20;
258 char* _tmp21;
259 char* _tmp22;
260 char* _tmp23;
261 char* s;
262 char* automake_path;
263 char* license_filename;
264 vala_project_generator_write_autogen_sh (self, &inner_error);
265 if (inner_error != NULL) {
266 if (inner_error->domain == G_FILE_ERROR) {
267 goto __catch0_g_file_error;
268 }
269 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
270 g_clear_error (&inner_error);
271 }
272 vala_project_generator_write_configure_ac (self, &inner_error);
273 if (inner_error != NULL) {
274 if (inner_error->domain == G_FILE_ERROR) {
275 goto __catch0_g_file_error;
276 }
277 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
278 g_clear_error (&inner_error);
279 }
280 vala_project_generator_write_makefile_am (self, &inner_error);
281 if (inner_error != NULL) {
282 if (inner_error->domain == G_FILE_ERROR) {
283 goto __catch0_g_file_error;
284 }
285 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
286 g_clear_error (&inner_error);
287 }
288 _tmp18 = NULL;
289 g_mkdir ((_tmp18 = g_strconcat (self->priv->project_path, "/src", NULL)), 0777);
290 _tmp18 = (g_free (_tmp18), NULL);
291 _tmp19 = NULL;
292 g_mkdir ((_tmp19 = g_strconcat (self->priv->project_path, "/po", NULL)), 0777);
293 _tmp19 = (g_free (_tmp19), NULL);
294 if (self->priv->project_type == VALA_PROJECT_TYPE_CONSOLE_APPLICATION) {
295 vala_project_generator_write_main_vala (self, &inner_error);
296 if (inner_error != NULL) {
297 if (inner_error->domain == G_FILE_ERROR) {
298 goto __catch0_g_file_error;
299 }
300 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
301 g_clear_error (&inner_error);
302 }
303 } else {
304 if (self->priv->project_type == VALA_PROJECT_TYPE_GTK_APPLICATION) {
305 vala_project_generator_write_mainwindow_vala (self, &inner_error);
306 if (inner_error != NULL) {
307 if (inner_error->domain == G_FILE_ERROR) {
308 goto __catch0_g_file_error;
309 }
310 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
311 g_clear_error (&inner_error);
312 }
313 }
314 }
315 vala_project_generator_write_authors (self, &inner_error);
316 if (inner_error != NULL) {
317 if (inner_error->domain == G_FILE_ERROR) {
318 goto __catch0_g_file_error;
319 }
320 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
321 g_clear_error (&inner_error);
322 }
323 vala_project_generator_write_maintainers (self, &inner_error);
324 if (inner_error != NULL) {
325 if (inner_error->domain == G_FILE_ERROR) {
326 goto __catch0_g_file_error;
327 }
328 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
329 g_clear_error (&inner_error);
330 }
331 vala_project_generator_write_linguas (self, &inner_error);
332 if (inner_error != NULL) {
333 if (inner_error->domain == G_FILE_ERROR) {
334 goto __catch0_g_file_error;
335 }
336 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
337 g_clear_error (&inner_error);
338 }
339 vala_project_generator_write_potfiles (self, &inner_error);
340 if (inner_error != NULL) {
341 if (inner_error->domain == G_FILE_ERROR) {
342 goto __catch0_g_file_error;
343 }
344 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
345 g_clear_error (&inner_error);
346 }
347 _tmp20 = NULL;
348 g_file_set_contents ((_tmp20 = g_strconcat (self->priv->project_path, "/NEWS", NULL)), "", ((glong) (-1)), &inner_error);
349 if (inner_error != NULL) {
350 if (inner_error->domain == G_FILE_ERROR) {
351 goto __catch0_g_file_error;
352 }
353 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
354 g_clear_error (&inner_error);
355 }
356 _tmp20 = (g_free (_tmp20), NULL);
357 _tmp21 = NULL;
358 g_file_set_contents ((_tmp21 = g_strconcat (self->priv->project_path, "/README", NULL)), "", ((glong) (-1)), &inner_error);
359 if (inner_error != NULL) {
360 if (inner_error->domain == G_FILE_ERROR) {
361 goto __catch0_g_file_error;
362 }
363 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
364 g_clear_error (&inner_error);
365 }
366 _tmp21 = (g_free (_tmp21), NULL);
367 _tmp22 = NULL;
368 g_file_set_contents ((_tmp22 = g_strconcat (self->priv->project_path, "/ChangeLog", NULL)), "", ((glong) (-1)), &inner_error);
369 if (inner_error != NULL) {
370 if (inner_error->domain == G_FILE_ERROR) {
371 goto __catch0_g_file_error;
372 }
373 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
374 g_clear_error (&inner_error);
375 }
376 _tmp22 = (g_free (_tmp22), NULL);
377 _tmp23 = NULL;
378 g_file_set_contents ((_tmp23 = g_strconcat (self->priv->project_path, "/po/ChangeLog", NULL)), "", ((glong) (-1)), &inner_error);
379 if (inner_error != NULL) {
380 if (inner_error->domain == G_FILE_ERROR) {
381 goto __catch0_g_file_error;
382 }
383 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
384 g_clear_error (&inner_error);
385 }
386 _tmp23 = (g_free (_tmp23), NULL);
387 s = NULL;
388 automake_path = vala_project_generator_get_automake_path (self);
389 if (automake_path != NULL) {
390 char* install_filename;
391 install_filename = g_strconcat (automake_path, "/INSTALL", NULL);
392 if (g_file_test (install_filename, G_FILE_TEST_EXISTS)) {
393 char* _tmp26;
394 gboolean _tmp25;
395 char* _tmp24;
396 char* _tmp27;
397 _tmp26 = NULL;
398 _tmp24 = NULL;
399 _tmp25 = g_file_get_contents (install_filename, &_tmp24, NULL, &inner_error);
400 s = (_tmp26 = _tmp24, (s = (g_free (s), NULL)), _tmp26);
401 _tmp25;
402 if (inner_error != NULL) {
403 if (inner_error->domain == G_FILE_ERROR) {
404 goto __catch0_g_file_error;
405 }
406 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
407 g_clear_error (&inner_error);
408 }
409 _tmp27 = NULL;
410 g_file_set_contents ((_tmp27 = g_strconcat (self->priv->project_path, "/INSTALL", NULL)), s, ((glong) (-1)), &inner_error);
411 if (inner_error != NULL) {
412 if (inner_error->domain == G_FILE_ERROR) {
413 goto __catch0_g_file_error;
414 }
415 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
416 g_clear_error (&inner_error);
417 }
418 _tmp27 = (g_free (_tmp27), NULL);
419 }
420 install_filename = (g_free (install_filename), NULL);
421 }
422 license_filename = NULL;
423 if (self->priv->project_license == VALA_PROJECT_LICENSE_GPL2) {
424 char* _tmp28;
425 _tmp28 = NULL;
426 license_filename = (_tmp28 = g_strdup (PACKAGE_DATADIR "/licenses/gpl-2.0.txt"), (license_filename = (g_free (license_filename), NULL)), _tmp28);
427 if (!g_file_test (license_filename, G_FILE_TEST_EXISTS)) {
428 char* _tmp29;
429 _tmp29 = NULL;
430 license_filename = (_tmp29 = g_strdup ("/usr/share/common-licenses/GPL-2"), (license_filename = (g_free (license_filename), NULL)), _tmp29);
431 }
432 } else {
433 if (self->priv->project_license == VALA_PROJECT_LICENSE_LGPL2) {
434 char* _tmp30;
435 _tmp30 = NULL;
436 license_filename = (_tmp30 = g_strdup (PACKAGE_DATADIR "/licenses/lgpl-2.1.txt"), (license_filename = (g_free (license_filename), NULL)), _tmp30);
437 if (!g_file_test (license_filename, G_FILE_TEST_EXISTS)) {
438 char* _tmp31;
439 _tmp31 = NULL;
440 license_filename = (_tmp31 = g_strdup ("/usr/share/common-licenses/LGPL-2.1"), (license_filename = (g_free (license_filename), NULL)), _tmp31);
441 }
442 } else {
443 if (self->priv->project_license == VALA_PROJECT_LICENSE_GPL3) {
444 char* _tmp32;
445 _tmp32 = NULL;
446 license_filename = (_tmp32 = g_strdup (PACKAGE_DATADIR "/licenses/gpl-3.0.txt"), (license_filename = (g_free (license_filename), NULL)), _tmp32);
447 if (!g_file_test (license_filename, G_FILE_TEST_EXISTS)) {
448 char* _tmp33;
449 _tmp33 = NULL;
450 license_filename = (_tmp33 = g_strdup ("/usr/share/common-licenses/GPL-3"), (license_filename = (g_free (license_filename), NULL)), _tmp33);
451 }
452 } else {
453 if (self->priv->project_license == VALA_PROJECT_LICENSE_LGPL3) {
454 char* _tmp34;
455 _tmp34 = NULL;
456 license_filename = (_tmp34 = g_strdup (PACKAGE_DATADIR "/licenses/lgpl-3.0.txt"), (license_filename = (g_free (license_filename), NULL)), _tmp34);
457 if (!g_file_test (license_filename, G_FILE_TEST_EXISTS)) {
458 char* _tmp35;
459 _tmp35 = NULL;
460 license_filename = (_tmp35 = g_strdup ("/usr/share/common-licenses/LGPL-3"), (license_filename = (g_free (license_filename), NULL)), _tmp35);
461 }
462 }
463 }
464 }
465 }
466 if (license_filename != NULL && g_file_test (license_filename, G_FILE_TEST_EXISTS)) {
467 char* _tmp38;
468 gboolean _tmp37;
469 char* _tmp36;
470 char* _tmp39;
471 _tmp38 = NULL;
472 _tmp36 = NULL;
473 _tmp37 = g_file_get_contents (license_filename, &_tmp36, NULL, &inner_error);
474 s = (_tmp38 = _tmp36, (s = (g_free (s), NULL)), _tmp38);
475 _tmp37;
476 if (inner_error != NULL) {
477 if (inner_error->domain == G_FILE_ERROR) {
478 goto __catch0_g_file_error;
479 }
480 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
481 g_clear_error (&inner_error);
482 }
483 _tmp39 = NULL;
484 g_file_set_contents ((_tmp39 = g_strconcat (self->priv->project_path, "/COPYING", NULL)), s, ((glong) (-1)), &inner_error);
485 if (inner_error != NULL) {
486 if (inner_error->domain == G_FILE_ERROR) {
487 goto __catch0_g_file_error;
488 }
489 g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, inner_error->message);
490 g_clear_error (&inner_error);
491 }
492 _tmp39 = (g_free (_tmp39), NULL);
493 }
494 s = (g_free (s), NULL);
495 automake_path = (g_free (automake_path), NULL);
496 license_filename = (g_free (license_filename), NULL);
497 }
498 goto __finally0;
499 __catch0_g_file_error:
500 {
501 GError * e;
502 e = inner_error;
503 inner_error = NULL;
504 {
505 g_critical ("valaprojectgenerator.vala:236: Error while creating project: %s", e->message);
506 (e == NULL ? NULL : (e = (g_error_free (e), NULL)));
507 }
508 }
509 __finally0:
510 ;
511 (project_name_str == NULL ? NULL : (project_name_str = (g_string_free (project_name_str, TRUE), NULL)));
512 (make_name_str == NULL ? NULL : (make_name_str = (g_string_free (make_name_str, TRUE), NULL)));
513 (namespace_name_str == NULL ? NULL : (namespace_name_str = (g_string_free (namespace_name_str, TRUE), NULL)));
514 }
515
516
vala_project_generator_write_autogen_sh(ValaProjectGenerator * self,GError ** error)517 static void vala_project_generator_write_autogen_sh (ValaProjectGenerator* self, GError** error) {
518 GError * inner_error;
519 GString* s;
520 char* _tmp0;
521 char* _tmp1;
522 g_return_if_fail (self != NULL);
523 inner_error = NULL;
524 s = g_string_new ("");
525 g_string_append (s, "#!/bin/sh\n");
526 g_string_append (s, "# Run this to generate all the initial makefiles, etc.\n\n");
527 g_string_append (s, "srcdir=`dirname $0`\n");
528 g_string_append (s, "test -z \"$srcdir\" && srcdir=.\n\n");
529 g_string_append_printf (s, "PKG_NAME=\"%s\"\n\n", self->priv->project_name);
530 g_string_append (s, ". gnome-autogen.sh\n");
531 _tmp0 = NULL;
532 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/autogen.sh", NULL)), s->str, ((glong) (-1)), &inner_error);
533 if (inner_error != NULL) {
534 g_propagate_error (error, inner_error);
535 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
536 return;
537 }
538 _tmp0 = (g_free (_tmp0), NULL);
539 _tmp1 = NULL;
540 g_chmod ((_tmp1 = g_strconcat (self->priv->project_path, "/autogen.sh", NULL)), 0755);
541 _tmp1 = (g_free (_tmp1), NULL);
542 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
543 }
544
545
vala_project_generator_write_configure_ac(ValaProjectGenerator * self,GError ** error)546 static void vala_project_generator_write_configure_ac (ValaProjectGenerator* self, GError** error) {
547 GError * inner_error;
548 gboolean use_gtk;
549 GString* s;
550 char* _tmp0;
551 g_return_if_fail (self != NULL);
552 inner_error = NULL;
553 use_gtk = (self->priv->project_type == VALA_PROJECT_TYPE_GTK_APPLICATION);
554 s = g_string_new ("");
555 g_string_append_printf (s, "AC_INIT([%s], [0.1.0], [%s], [%s])\n", self->priv->project_name, self->priv->email_address, self->priv->project_name);
556 g_string_append (s, "AC_CONFIG_SRCDIR([Makefile.am])\n");
557 g_string_append (s, "AC_CONFIG_HEADERS(config.h)\n");
558 g_string_append (s, "AM_INIT_AUTOMAKE([dist-bzip2])\n");
559 g_string_append (s, "AM_MAINTAINER_MODE\n\n");
560 g_string_append (s, "AC_PROG_CC\n");
561 g_string_append (s, "AM_PROG_CC_C_O\n");
562 g_string_append (s, "AC_DISABLE_STATIC\n");
563 g_string_append (s, "AC_PROG_LIBTOOL\n\n");
564 g_string_append (s, "AC_PATH_PROG(VALAC, valac, valac)\n");
565 g_string_append (s, "AC_SUBST(VALAC)\n\n");
566 g_string_append (s, "AH_TEMPLATE([GETTEXT_PACKAGE], [Package name for gettext])\n");
567 g_string_append_printf (s, "GETTEXT_PACKAGE=%s\n", self->priv->project_name);
568 g_string_append (s, "AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, \"$GETTEXT_PACKAGE\")\n");
569 g_string_append (s, "AC_SUBST(GETTEXT_PACKAGE)\n");
570 g_string_append (s, "AM_GLIB_GNU_GETTEXT\n");
571 g_string_append (s, "IT_PROG_INTLTOOL([0.35.0])\n\n");
572 g_string_append (s, "AC_SUBST(CFLAGS)\n");
573 g_string_append (s, "AC_SUBST(CPPFLAGS)\n");
574 g_string_append (s, "AC_SUBST(LDFLAGS)\n\n");
575 g_string_append (s, "GLIB_REQUIRED=2.12.0\n");
576 if (use_gtk) {
577 g_string_append (s, "GTK_REQUIRED=2.10.0\n");
578 }
579 g_string_append (s, "\n");
580 g_string_append_printf (s, "PKG_CHECK_MODULES(%s, glib-2.0 >= $GLIB_REQUIRED gobject-2.0 >= $GLIB_REQUIRED", self->priv->upper_case_make_name);
581 if (use_gtk) {
582 g_string_append (s, " gtk+-2.0 >= $GTK_REQUIRED");
583 }
584 g_string_append (s, ")\n");
585 g_string_append_printf (s, "AC_SUBST(%s_CFLAGS)\n", self->priv->upper_case_make_name);
586 g_string_append_printf (s, "AC_SUBST(%s_LIBS)\n\n", self->priv->upper_case_make_name);
587 g_string_append (s, "AC_CONFIG_FILES([Makefile\n");
588 g_string_append (s, "\tpo/Makefile.in])\n\n");
589 g_string_append (s, "AC_OUTPUT\n");
590 _tmp0 = NULL;
591 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/configure.ac", NULL)), s->str, ((glong) (-1)), &inner_error);
592 if (inner_error != NULL) {
593 g_propagate_error (error, inner_error);
594 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
595 return;
596 }
597 _tmp0 = (g_free (_tmp0), NULL);
598 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
599 }
600
601
vala_project_generator_write_makefile_am(ValaProjectGenerator * self,GError ** error)602 static void vala_project_generator_write_makefile_am (ValaProjectGenerator* self, GError** error) {
603 GError * inner_error;
604 gboolean use_gtk;
605 GString* s;
606 char* _tmp0;
607 g_return_if_fail (self != NULL);
608 inner_error = NULL;
609 use_gtk = (self->priv->project_type == VALA_PROJECT_TYPE_GTK_APPLICATION);
610 s = g_string_new ("");
611 g_string_append (s, "NULL = \n\n");
612 g_string_append (s, "AUTOMAKE_OPTIONS = subdir-objects\n\n");
613 g_string_append (s, "SUBDIRS = \\\n");
614 g_string_append (s, "\tpo \\\n");
615 g_string_append (s, "\t$(NULL)\n\n");
616 g_string_append (s, "AM_CPPFLAGS = \\\n");
617 g_string_append_printf (s, "\t$(%s_CFLAGS) \\\n", self->priv->upper_case_make_name);
618 g_string_append (s, "\t-include $(CONFIG_HEADER) \\\n");
619 g_string_append (s, "\t$(NULL)\n\n");
620 g_string_append_printf (s, "BUILT_SOURCES = src/%s.vala.stamp\n\n", self->priv->project_name);
621 g_string_append_printf (s, "bin_PROGRAMS = %s\n\n", self->priv->project_name);
622 g_string_append_printf (s, "%s_VALASOURCES = \\\n", self->priv->make_name);
623 if (use_gtk) {
624 g_string_append (s, "\tsrc/mainwindow.vala \\\n");
625 } else {
626 g_string_append (s, "\tsrc/main.vala \\\n");
627 }
628 g_string_append (s, "\t$(NULL)\n\n");
629 g_string_append_printf (s, "%s_SOURCES = \\\n", self->priv->make_name);
630 g_string_append_printf (s, "\t$(%s_VALASOURCES:.vala=.c) \\\n", self->priv->make_name);
631 g_string_append_printf (s, "\t$(%s_VALASOURCES:.vala=.h) \\\n", self->priv->make_name);
632 g_string_append (s, "\t$(NULL)\n\n");
633 g_string_append_printf (s, "src/%s.vala.stamp: $(%s_VALASOURCES)\n", self->priv->project_name, self->priv->make_name);
634 g_string_append (s, "\t$(VALAC) -C ");
635 if (use_gtk) {
636 g_string_append (s, "--pkg gtk+-2.0 ");
637 }
638 g_string_append (s, "--basedir $(top_srcdir) $^\n");
639 g_string_append (s, "\ttouch $@\n\n");
640 g_string_append_printf (s, "%s_LDADD = \\\n", self->priv->make_name);
641 g_string_append_printf (s, "\t$(%s_LIBS) \\\n", self->priv->upper_case_make_name);
642 g_string_append (s, "\t$(NULL)\n\n");
643 g_string_append (s, "EXTRA_DIST = \\\n");
644 g_string_append (s, "\tintltool-extract.in \\\n");
645 g_string_append (s, "\tintltool-update.in \\\n");
646 g_string_append (s, "\tintltool-merge.in \\\n");
647 g_string_append_printf (s, "\t$(%s_VALASOURCES) \\\n", self->priv->make_name);
648 g_string_append_printf (s, "\tsrc/%s.vala.stamp \\\n", self->priv->project_name);
649 g_string_append (s, "\t$(NULL)\n\n");
650 g_string_append (s, "DISTCLEANFILES = \\\n");
651 g_string_append (s, "\tintltool-extract \\\n");
652 g_string_append (s, "\tintltool-update \\\n");
653 g_string_append (s, "\tintltool-merge \\\n");
654 g_string_append (s, "\tpo/.intltool-merge-cache \\\n");
655 g_string_append (s, "\t$(NULL)\n\n");
656 _tmp0 = NULL;
657 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/Makefile.am", NULL)), s->str, ((glong) (-1)), &inner_error);
658 if (inner_error != NULL) {
659 g_propagate_error (error, inner_error);
660 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
661 return;
662 }
663 _tmp0 = (g_free (_tmp0), NULL);
664 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
665 }
666
667
vala_project_generator_generate_source_file_header(ValaProjectGenerator * self,const char * filename)668 static char* vala_project_generator_generate_source_file_header (ValaProjectGenerator* self, const char* filename) {
669 GString* s;
670 GTimeVal tv = {0};
671 GDate _tmp0 = {0};
672 GDate d;
673 char* license_name;
674 char* license_version;
675 char* program_type;
676 const char* _tmp13;
677 char* _tmp14;
678 g_return_val_if_fail (self != NULL, NULL);
679 g_return_val_if_fail (filename != NULL, NULL);
680 s = g_string_new ("");
681 g_get_current_time (&tv);
682 d = (memset (&_tmp0, 0, sizeof (GDate)), _tmp0);
683 g_date_set_time_val (&d, &tv);
684 g_string_append_printf (s, "/* %s\n", filename);
685 g_string_append (s, " *\n");
686 g_string_append_printf (s, " * Copyright (C) %d %s\n", ((gint) (g_date_get_year (&d))), self->priv->real_name);
687 g_string_append (s, " *\n");
688 license_name = g_strdup ("");
689 license_version = NULL;
690 program_type = NULL;
691 switch (self->priv->project_license) {
692 case VALA_PROJECT_LICENSE_GPL2:
693 {
694 char* _tmp1;
695 char* _tmp2;
696 char* _tmp3;
697 _tmp1 = NULL;
698 license_name = (_tmp1 = g_strdup ("GNU General Public License"), (license_name = (g_free (license_name), NULL)), _tmp1);
699 _tmp2 = NULL;
700 license_version = (_tmp2 = g_strdup ("2"), (license_version = (g_free (license_version), NULL)), _tmp2);
701 _tmp3 = NULL;
702 program_type = (_tmp3 = g_strdup ("program"), (program_type = (g_free (program_type), NULL)), _tmp3);
703 break;
704 }
705 case VALA_PROJECT_LICENSE_GPL3:
706 {
707 char* _tmp4;
708 char* _tmp5;
709 char* _tmp6;
710 _tmp4 = NULL;
711 license_name = (_tmp4 = g_strdup ("GNU General Public License"), (license_name = (g_free (license_name), NULL)), _tmp4);
712 _tmp5 = NULL;
713 license_version = (_tmp5 = g_strdup ("3"), (license_version = (g_free (license_version), NULL)), _tmp5);
714 _tmp6 = NULL;
715 program_type = (_tmp6 = g_strdup ("program"), (program_type = (g_free (program_type), NULL)), _tmp6);
716 break;
717 }
718 case VALA_PROJECT_LICENSE_LGPL2:
719 {
720 char* _tmp7;
721 char* _tmp8;
722 char* _tmp9;
723 _tmp7 = NULL;
724 license_name = (_tmp7 = g_strdup ("GNU Lesser General Public License"), (license_name = (g_free (license_name), NULL)), _tmp7);
725 _tmp8 = NULL;
726 license_version = (_tmp8 = g_strdup ("2.1"), (license_version = (g_free (license_version), NULL)), _tmp8);
727 _tmp9 = NULL;
728 program_type = (_tmp9 = g_strdup ("library"), (program_type = (g_free (program_type), NULL)), _tmp9);
729 break;
730 }
731 case VALA_PROJECT_LICENSE_LGPL3:
732 {
733 char* _tmp10;
734 char* _tmp11;
735 char* _tmp12;
736 _tmp10 = NULL;
737 license_name = (_tmp10 = g_strdup ("GNU Lesser General Public License"), (license_name = (g_free (license_name), NULL)), _tmp10);
738 _tmp11 = NULL;
739 license_version = (_tmp11 = g_strdup ("3"), (license_version = (g_free (license_version), NULL)), _tmp11);
740 _tmp12 = NULL;
741 program_type = (_tmp12 = g_strdup ("library"), (program_type = (g_free (program_type), NULL)), _tmp12);
742 break;
743 }
744 }
745 g_string_append_printf (s, " * This %s is free software: you can redistribute it and/or modify\n", program_type);
746 g_string_append_printf (s, " * it under the terms of the %s as published by\n", license_name);
747 g_string_append_printf (s, " * the Free Software Foundation, either version %s of the License, or\n", license_version);
748 g_string_append (s, " * (at your option) any later version.\n");
749 g_string_append (s, " *\n");
750 g_string_append_printf (s, " * This %s is distributed in the hope that it will be useful,\n", program_type);
751 g_string_append (s, " * but WITHOUT ANY WARRANTY; without even the implied warranty of\n");
752 g_string_append (s, " * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n");
753 g_string_append_printf (s, " * %s for more details.\n", license_name);
754 g_string_append (s, " *\n");
755 g_string_append_printf (s, " * You should have received a copy of the %s\n", license_name);
756 g_string_append_printf (s, " * along with this %s. If not, see <http://www.gnu.org/licenses/>.\n", program_type);
757 g_string_append (s, " *\n");
758 g_string_append (s, " * Author:\n");
759 g_string_append_printf (s, " * \t%s <%s>\n", self->priv->real_name, self->priv->email_address);
760 g_string_append (s, " */\n\n");
761 _tmp13 = NULL;
762 _tmp14 = NULL;
763 return (_tmp14 = (_tmp13 = s->str, (_tmp13 == NULL ? NULL : g_strdup (_tmp13))), (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL))), (license_name = (g_free (license_name), NULL)), (license_version = (g_free (license_version), NULL)), (program_type = (g_free (program_type), NULL)), _tmp14);
764 }
765
766
vala_project_generator_write_main_vala(ValaProjectGenerator * self,GError ** error)767 static void vala_project_generator_write_main_vala (ValaProjectGenerator* self, GError** error) {
768 GError * inner_error;
769 GString* s;
770 char* _tmp0;
771 char* _tmp1;
772 g_return_if_fail (self != NULL);
773 inner_error = NULL;
774 s = g_string_new ("");
775 _tmp0 = NULL;
776 g_string_append (s, (_tmp0 = vala_project_generator_generate_source_file_header (self, "main.vala")));
777 _tmp0 = (g_free (_tmp0), NULL);
778 g_string_append (s, "using GLib;\n");
779 g_string_append (s, "\n");
780 g_string_append_printf (s, "public class %s.Main : Object {\n", self->priv->namespace_name);
781 g_string_append (s, "\tpublic Main () {\n");
782 g_string_append (s, "\t}\n");
783 g_string_append (s, "\n");
784 g_string_append (s, "\tpublic void run () {\n");
785 g_string_append (s, "\t\tstdout.printf (\"Hello, world!\\n\");\n");
786 g_string_append (s, "\t}\n");
787 g_string_append (s, "\n");
788 g_string_append (s, "\tstatic int main (string[] args) {\n");
789 g_string_append (s, "\t\tvar main = new Main ();\n");
790 g_string_append (s, "\t\tmain.run ();\n");
791 g_string_append (s, "\t\treturn 0;\n");
792 g_string_append (s, "\t}\n");
793 g_string_append (s, "\n");
794 g_string_append (s, "}\n");
795 _tmp1 = NULL;
796 g_file_set_contents ((_tmp1 = g_strconcat (self->priv->project_path, "/src/main.vala", NULL)), s->str, ((glong) (-1)), &inner_error);
797 if (inner_error != NULL) {
798 g_propagate_error (error, inner_error);
799 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
800 return;
801 }
802 _tmp1 = (g_free (_tmp1), NULL);
803 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
804 }
805
806
vala_project_generator_write_mainwindow_vala(ValaProjectGenerator * self,GError ** error)807 static void vala_project_generator_write_mainwindow_vala (ValaProjectGenerator* self, GError** error) {
808 GError * inner_error;
809 GString* s;
810 char* _tmp0;
811 char* _tmp1;
812 char* _tmp2;
813 g_return_if_fail (self != NULL);
814 inner_error = NULL;
815 s = g_string_new ("");
816 _tmp0 = NULL;
817 g_string_append (s, (_tmp0 = vala_project_generator_generate_source_file_header (self, "mainwindow.vala")));
818 _tmp0 = (g_free (_tmp0), NULL);
819 g_string_append (s, "using GLib;\n");
820 g_string_append (s, "using Gtk;\n");
821 g_string_append (s, "\n");
822 g_string_append_printf (s, "public class %s.MainWindow : Window {\n", self->priv->namespace_name);
823 g_string_append (s, "\tprivate TextBuffer text_buffer;\n");
824 g_string_append (s, "\tprivate string filename;\n");
825 g_string_append (s, "\n");
826 g_string_append (s, "\tpublic MainWindow () {\n");
827 _tmp1 = NULL;
828 g_string_append_printf (s, "\t\ttitle = \"%s\";\n", (_tmp1 = g_strescape (self->priv->project_name, "")));
829 _tmp1 = (g_free (_tmp1), NULL);
830 g_string_append (s, "\t}\n");
831 g_string_append (s, "\n");
832 g_string_append (s, "\tconstruct {\n");
833 g_string_append (s, "\t\tset_default_size (600, 400);\n");
834 g_string_append (s, "\n");
835 g_string_append (s, "\t\tdestroy += Gtk.main_quit;\n");
836 g_string_append (s, "\n");
837 g_string_append (s, "\t\tvar vbox = new VBox (false, 0);\n");
838 g_string_append (s, "\t\tadd (vbox);\n");
839 g_string_append (s, "\t\tvbox.show ();\n");
840 g_string_append (s, "\n");
841 g_string_append (s, "\t\tvar toolbar = new Toolbar ();\n");
842 g_string_append (s, "\t\tvbox.pack_start (toolbar, false, false, 0);\n");
843 g_string_append (s, "\t\ttoolbar.show ();\n");
844 g_string_append (s, "\n");
845 g_string_append (s, "\t\tvar button = new ToolButton.from_stock (Gtk.STOCK_SAVE);\n");
846 g_string_append (s, "\t\ttoolbar.insert (button, -1);\n");
847 g_string_append (s, "\t\tbutton.is_important = true;\n");
848 g_string_append (s, "\t\tbutton.clicked += on_save_clicked;\n");
849 g_string_append (s, "\t\tbutton.show ();\n");
850 g_string_append (s, "\n");
851 g_string_append (s, "\t\tvar scrolled_window = new ScrolledWindow (null, null);\n");
852 g_string_append (s, "\t\tvbox.pack_start (scrolled_window, true, true, 0);\n");
853 g_string_append (s, "\t\tscrolled_window.hscrollbar_policy = PolicyType.AUTOMATIC;\n");
854 g_string_append (s, "\t\tscrolled_window.vscrollbar_policy = PolicyType.AUTOMATIC;\n");
855 g_string_append (s, "\t\tscrolled_window.show ();\n");
856 g_string_append (s, "\n");
857 g_string_append (s, "\t\ttext_buffer = new TextBuffer (null);\n");
858 g_string_append (s, "\n");
859 g_string_append (s, "\t\tvar text_view = new TextView.with_buffer (text_buffer);\n");
860 g_string_append (s, "\t\tscrolled_window.add (text_view);\n");
861 g_string_append (s, "\t\ttext_view.show ();\n");
862 g_string_append (s, "\t}\n");
863 g_string_append (s, "\n");
864 g_string_append (s, "\tpublic void run () {\n");
865 g_string_append (s, "\t\tshow ();\n");
866 g_string_append (s, "\n");
867 g_string_append (s, "\t\tGtk.main ();\n");
868 g_string_append (s, "\t}\n");
869 g_string_append (s, "\n");
870 g_string_append (s, "\tprivate void on_save_clicked (ToolButton button) {\n");
871 g_string_append (s, "\t\tif (filename == null) {\n");
872 g_string_append (s, "\t\t\tvar dialog = new FileChooserDialog (_(\"Save File\"), this, FileChooserAction.SAVE,\n");
873 g_string_append (s, "\t\t\t\tGtk.STOCK_CANCEL, ResponseType.CANCEL,\n");
874 g_string_append (s, "\t\t\t\tGtk.STOCK_SAVE, ResponseType.ACCEPT);\n");
875 g_string_append (s, "\t\t\tdialog.set_do_overwrite_confirmation (true);\n");
876 g_string_append (s, "\t\t\tif (dialog.run () == ResponseType.ACCEPT) {\n");
877 g_string_append (s, "\t\t\t\tfilename = dialog.get_filename ();\n");
878 g_string_append (s, "\t\t\t}\n");
879 g_string_append (s, "\n");
880 g_string_append (s, "\t\t\tdialog.destroy ();\n");
881 g_string_append (s, "\t\t\tif (filename == null) {\n");
882 g_string_append (s, "\t\t\t\treturn;\n");
883 g_string_append (s, "\t\t\t}\n");
884 g_string_append (s, "\t\t}\n");
885 g_string_append (s, "\n");
886 g_string_append (s, "\t\ttry {\n");
887 g_string_append (s, "\t\t\tTextIter start_iter, end_iter;\n");
888 g_string_append (s, "\t\t\ttext_buffer.get_bounds (out start_iter, out end_iter);\n");
889 g_string_append (s, "\t\t\tstring text = text_buffer.get_text (start_iter, end_iter, true);\n");
890 g_string_append (s, "\t\t\tFileUtils.set_contents (filename, text, -1);\n");
891 g_string_append (s, "\t\t} catch (FileError e) {\n");
892 g_string_append (s, "\t\t\tcritical (\"Error while trying to save file: %s\", e.message);\n");
893 g_string_append (s, "\t\t\tfilename = null;\n");
894 g_string_append (s, "\t\t}\n");
895 g_string_append (s, "\n");
896 g_string_append (s, "\t}\n");
897 g_string_append (s, "\n");
898 g_string_append (s, "\tstatic int main (string[] args) {\n");
899 g_string_append (s, "\t\tGtk.init (ref args);\n");
900 g_string_append (s, "\n");
901 g_string_append (s, "\t\tvar window = new MainWindow ();\n");
902 g_string_append (s, "\t\twindow.run ();\n");
903 g_string_append (s, "\t\treturn 0;\n");
904 g_string_append (s, "\t}\n");
905 g_string_append (s, "\n");
906 g_string_append (s, "}\n");
907 _tmp2 = NULL;
908 g_file_set_contents ((_tmp2 = g_strconcat (self->priv->project_path, "/src/mainwindow.vala", NULL)), s->str, ((glong) (-1)), &inner_error);
909 if (inner_error != NULL) {
910 g_propagate_error (error, inner_error);
911 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
912 return;
913 }
914 _tmp2 = (g_free (_tmp2), NULL);
915 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
916 }
917
918
vala_project_generator_write_potfiles(ValaProjectGenerator * self,GError ** error)919 static void vala_project_generator_write_potfiles (ValaProjectGenerator* self, GError** error) {
920 GError * inner_error;
921 gboolean use_gtk;
922 GString* s;
923 char* _tmp0;
924 g_return_if_fail (self != NULL);
925 inner_error = NULL;
926 use_gtk = (self->priv->project_type == VALA_PROJECT_TYPE_GTK_APPLICATION);
927 s = g_string_new ("");
928 g_string_append (s, "[encoding: UTF-8]\n");
929 g_string_append (s, "# List of source files which contain translatable strings.\n");
930 if (use_gtk) {
931 g_string_append (s, "src/mainwindow.vala\n");
932 } else {
933 g_string_append (s, "src/main.vala\n");
934 }
935 _tmp0 = NULL;
936 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/po/POTFILES.in", NULL)), s->str, ((glong) (-1)), &inner_error);
937 if (inner_error != NULL) {
938 g_propagate_error (error, inner_error);
939 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
940 return;
941 }
942 _tmp0 = (g_free (_tmp0), NULL);
943 if (use_gtk) {
944 char* _tmp1;
945 _tmp1 = NULL;
946 g_file_set_contents ((_tmp1 = g_strconcat (self->priv->project_path, "/po/POTFILES.skip", NULL)), "src/mainwindow.c\n", ((glong) (-1)), &inner_error);
947 if (inner_error != NULL) {
948 g_propagate_error (error, inner_error);
949 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
950 return;
951 }
952 _tmp1 = (g_free (_tmp1), NULL);
953 } else {
954 char* _tmp2;
955 _tmp2 = NULL;
956 g_file_set_contents ((_tmp2 = g_strconcat (self->priv->project_path, "/po/POTFILES.skip", NULL)), "src/main.c\n", ((glong) (-1)), &inner_error);
957 if (inner_error != NULL) {
958 g_propagate_error (error, inner_error);
959 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
960 return;
961 }
962 _tmp2 = (g_free (_tmp2), NULL);
963 }
964 (s == NULL ? NULL : (s = (g_string_free (s, TRUE), NULL)));
965 }
966
967
vala_project_generator_write_linguas(ValaProjectGenerator * self,GError ** error)968 static void vala_project_generator_write_linguas (ValaProjectGenerator* self, GError** error) {
969 GError * inner_error;
970 char* s;
971 char* _tmp0;
972 g_return_if_fail (self != NULL);
973 inner_error = NULL;
974 s = g_strdup ("# please keep this list sorted alphabetically\n#\n");
975 _tmp0 = NULL;
976 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/po/LINGUAS", NULL)), s, ((glong) (-1)), &inner_error);
977 if (inner_error != NULL) {
978 g_propagate_error (error, inner_error);
979 s = (g_free (s), NULL);
980 return;
981 }
982 _tmp0 = (g_free (_tmp0), NULL);
983 s = (g_free (s), NULL);
984 }
985
986
vala_project_generator_write_authors(ValaProjectGenerator * self,GError ** error)987 static void vala_project_generator_write_authors (ValaProjectGenerator* self, GError** error) {
988 GError * inner_error;
989 char* s;
990 char* _tmp0;
991 g_return_if_fail (self != NULL);
992 inner_error = NULL;
993 s = g_strdup_printf ("%s <%s>\n", self->priv->real_name, self->priv->email_address);
994 _tmp0 = NULL;
995 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/AUTHORS", NULL)), s, ((glong) (-1)), &inner_error);
996 if (inner_error != NULL) {
997 g_propagate_error (error, inner_error);
998 s = (g_free (s), NULL);
999 return;
1000 }
1001 _tmp0 = (g_free (_tmp0), NULL);
1002 s = (g_free (s), NULL);
1003 }
1004
1005
vala_project_generator_write_maintainers(ValaProjectGenerator * self,GError ** error)1006 static void vala_project_generator_write_maintainers (ValaProjectGenerator* self, GError** error) {
1007 GError * inner_error;
1008 char* s;
1009 char* _tmp0;
1010 g_return_if_fail (self != NULL);
1011 inner_error = NULL;
1012 s = g_strdup_printf ("%s\nE-mail: %s\n", self->priv->real_name, self->priv->email_address);
1013 _tmp0 = NULL;
1014 g_file_set_contents ((_tmp0 = g_strconcat (self->priv->project_path, "/MAINTAINERS", NULL)), s, ((glong) (-1)), &inner_error);
1015 if (inner_error != NULL) {
1016 g_propagate_error (error, inner_error);
1017 s = (g_free (s), NULL);
1018 return;
1019 }
1020 _tmp0 = (g_free (_tmp0), NULL);
1021 s = (g_free (s), NULL);
1022 }
1023
1024
vala_project_generator_get_automake_path(ValaProjectGenerator * self)1025 static char* vala_project_generator_get_automake_path (ValaProjectGenerator* self) {
1026 char** _tmp1;
1027 gint automake_paths_length1;
1028 char** _tmp0;
1029 char** automake_paths;
1030 char* _tmp4;
1031 g_return_val_if_fail (self != NULL, NULL);
1032 _tmp1 = NULL;
1033 _tmp0 = NULL;
1034 automake_paths = (_tmp1 = (_tmp0 = g_new0 (char*, 3 + 1), _tmp0[0] = g_strdup ("/usr/share/automake"), _tmp0[1] = g_strdup ("/usr/share/automake-1.10"), _tmp0[2] = g_strdup ("/usr/share/automake-1.9"), _tmp0), automake_paths_length1 = 3, _tmp1);
1035 {
1036 char** automake_path_collection;
1037 int automake_path_collection_length1;
1038 int automake_path_it;
1039 automake_path_collection = automake_paths;
1040 automake_path_collection_length1 = automake_paths_length1;
1041 for (automake_path_it = 0; (automake_paths_length1 != -1 && automake_path_it < automake_paths_length1) || (automake_paths_length1 == -1 && automake_path_collection[automake_path_it] != NULL); automake_path_it = automake_path_it + 1) {
1042 const char* _tmp3;
1043 char* automake_path;
1044 _tmp3 = NULL;
1045 automake_path = (_tmp3 = automake_path_collection[automake_path_it], (_tmp3 == NULL ? NULL : g_strdup (_tmp3)));
1046 {
1047 if (g_file_test (automake_path, G_FILE_TEST_IS_DIR)) {
1048 char* _tmp2;
1049 _tmp2 = NULL;
1050 return (_tmp2 = automake_path, (automake_paths = (_vala_array_free (automake_paths, automake_paths_length1, ((GDestroyNotify) (g_free))), NULL)), _tmp2);
1051 }
1052 automake_path = (g_free (automake_path), NULL);
1053 }
1054 }
1055 }
1056 _tmp4 = NULL;
1057 return (_tmp4 = NULL, (automake_paths = (_vala_array_free (automake_paths, automake_paths_length1, ((GDestroyNotify) (g_free))), NULL)), _tmp4);
1058 }
1059
1060
vala_project_generator_main(char ** args,int args_length1)1061 static void vala_project_generator_main (char** args, int args_length1) {
1062 ValaProjectGenerator* generator;
1063 gtk_init (&args_length1, &args);
1064 generator = g_object_ref_sink (vala_project_generator_new ());
1065 if (gtk_dialog_run (((GtkDialog*) (generator))) == GTK_RESPONSE_OK) {
1066 vala_project_generator_create_project (generator);
1067 }
1068 (generator == NULL ? NULL : (generator = (g_object_unref (generator), NULL)));
1069 }
1070
1071
main(int argc,char ** argv)1072 int main (int argc, char ** argv) {
1073 g_type_init ();
1074 vala_project_generator_main (argv, argc);
1075 return 0;
1076 }
1077
1078
vala_project_generator_constructor(GType type,guint n_construct_properties,GObjectConstructParam * construct_properties)1079 static GObject * vala_project_generator_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
1080 GObject * obj;
1081 ValaProjectGeneratorClass * klass;
1082 GObjectClass * parent_class;
1083 ValaProjectGenerator * self;
1084 klass = VALA_PROJECT_GENERATOR_CLASS (g_type_class_peek (VALA_TYPE_PROJECT_GENERATOR));
1085 parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
1086 obj = parent_class->constructor (type, n_construct_properties, construct_properties);
1087 self = VALA_PROJECT_GENERATOR (obj);
1088 {
1089 GtkVBox* _tmp0;
1090 GtkVBox* vbox;
1091 GtkSizeGroup* size_group;
1092 GtkLabel* label;
1093 GtkHBox* hbox;
1094 GtkLabel* _tmp1;
1095 GtkHBox* _tmp2;
1096 GtkFileChooserButton* _tmp3;
1097 GtkHBox* _tmp4;
1098 GtkComboBox* _tmp5;
1099 GtkHBox* _tmp6;
1100 GtkComboBox* _tmp7;
1101 GtkLabel* _tmp8;
1102 GtkHBox* _tmp9;
1103 GtkEntry* _tmp10;
1104 char* _tmp12;
1105 const char* _tmp11;
1106 GtkHBox* _tmp13;
1107 GtkEntry* _tmp14;
1108 char* _tmp16;
1109 const char* _tmp15;
1110 GtkWidget* _tmp17;
1111 GtkWidget* ok_button;
1112 gtk_container_set_border_width (((GtkContainer*) (self)), ((guint) (12)));
1113 gtk_dialog_set_has_separator (((GtkDialog*) (self)), FALSE);
1114 _tmp0 = NULL;
1115 vbox = (_tmp0 = GTK_VBOX (((GtkDialog*) (self))->vbox), (_tmp0 == NULL ? NULL : g_object_ref (_tmp0)));
1116 size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
1117 label = NULL;
1118 hbox = NULL;
1119 gtk_box_set_spacing (((GtkBox*) (vbox)), 6);
1120 _tmp1 = NULL;
1121 label = (_tmp1 = g_object_ref_sink (((GtkLabel*) (gtk_label_new ("<b>Project</b>")))), (label == NULL ? NULL : (label = (g_object_unref (label), NULL))), _tmp1);
1122 gtk_box_pack_start (((GtkBox*) (vbox)), ((GtkWidget*) (label)), FALSE, FALSE, ((guint) (0)));
1123 gtk_label_set_use_markup (label, TRUE);
1124 g_object_set (((GtkMisc*) (label)), "xalign", ((float) (0)), NULL);
1125 gtk_widget_show (((GtkWidget*) (label)));
1126 _tmp2 = NULL;
1127 hbox = (_tmp2 = vala_project_generator_create_hbox (self, "Project folder:", size_group), (hbox == NULL ? NULL : (hbox = (g_object_unref (hbox), NULL))), _tmp2);
1128 _tmp3 = NULL;
1129 self->priv->project_folder_button = (_tmp3 = g_object_ref_sink (((GtkFileChooserButton*) (gtk_file_chooser_button_new ("Select a project folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)))), (self->priv->project_folder_button == NULL ? NULL : (self->priv->project_folder_button = (g_object_unref (self->priv->project_folder_button), NULL))), _tmp3);
1130 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (self->priv->project_folder_button)), TRUE, TRUE, ((guint) (0)));
1131 gtk_widget_show (((GtkWidget*) (self->priv->project_folder_button)));
1132 _tmp4 = NULL;
1133 hbox = (_tmp4 = vala_project_generator_create_hbox (self, "Project type:", size_group), (hbox == NULL ? NULL : (hbox = (g_object_unref (hbox), NULL))), _tmp4);
1134 _tmp5 = NULL;
1135 self->priv->project_type_combobox = (_tmp5 = g_object_ref_sink (((GtkComboBox*) (gtk_combo_box_new_text ()))), (self->priv->project_type_combobox == NULL ? NULL : (self->priv->project_type_combobox = (g_object_unref (self->priv->project_type_combobox), NULL))), _tmp5);
1136 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (self->priv->project_type_combobox)), TRUE, TRUE, ((guint) (0)));
1137 gtk_combo_box_append_text (self->priv->project_type_combobox, "Console Application");
1138 gtk_combo_box_append_text (self->priv->project_type_combobox, "GTK+ Application");
1139 gtk_combo_box_set_active (self->priv->project_type_combobox, ((gint) (VALA_PROJECT_TYPE_GTK_APPLICATION)));
1140 gtk_widget_show (((GtkWidget*) (self->priv->project_type_combobox)));
1141 _tmp6 = NULL;
1142 hbox = (_tmp6 = vala_project_generator_create_hbox (self, "License:", size_group), (hbox == NULL ? NULL : (hbox = (g_object_unref (hbox), NULL))), _tmp6);
1143 _tmp7 = NULL;
1144 self->priv->license_combobox = (_tmp7 = g_object_ref_sink (((GtkComboBox*) (gtk_combo_box_new_text ()))), (self->priv->license_combobox == NULL ? NULL : (self->priv->license_combobox = (g_object_unref (self->priv->license_combobox), NULL))), _tmp7);
1145 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (self->priv->license_combobox)), TRUE, TRUE, ((guint) (0)));
1146 gtk_combo_box_append_text (self->priv->license_combobox, "GNU General Public License, version 2 or later");
1147 gtk_combo_box_append_text (self->priv->license_combobox, "GNU General Public License, version 3 or later");
1148 gtk_combo_box_append_text (self->priv->license_combobox, "GNU Lesser General Public License, version 2.1 or later");
1149 gtk_combo_box_append_text (self->priv->license_combobox, "GNU Lesser General Public License, version 3 or later");
1150 gtk_combo_box_set_active (self->priv->license_combobox, ((gint) (VALA_PROJECT_LICENSE_LGPL2)));
1151 gtk_widget_show (((GtkWidget*) (self->priv->license_combobox)));
1152 _tmp8 = NULL;
1153 label = (_tmp8 = g_object_ref_sink (((GtkLabel*) (gtk_label_new ("<b>Author</b>")))), (label == NULL ? NULL : (label = (g_object_unref (label), NULL))), _tmp8);
1154 gtk_box_pack_start (((GtkBox*) (vbox)), ((GtkWidget*) (label)), FALSE, FALSE, ((guint) (0)));
1155 gtk_label_set_use_markup (label, TRUE);
1156 g_object_set (((GtkMisc*) (label)), "xalign", ((float) (0)), NULL);
1157 gtk_widget_show (((GtkWidget*) (label)));
1158 _tmp9 = NULL;
1159 hbox = (_tmp9 = vala_project_generator_create_hbox (self, "Name:", size_group), (hbox == NULL ? NULL : (hbox = (g_object_unref (hbox), NULL))), _tmp9);
1160 _tmp10 = NULL;
1161 self->priv->name_entry = (_tmp10 = g_object_ref_sink (((GtkEntry*) (gtk_entry_new ()))), (self->priv->name_entry == NULL ? NULL : (self->priv->name_entry = (g_object_unref (self->priv->name_entry), NULL))), _tmp10);
1162 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (self->priv->name_entry)), TRUE, TRUE, ((guint) (0)));
1163 _tmp12 = NULL;
1164 _tmp11 = NULL;
1165 self->priv->real_name = (_tmp12 = (_tmp11 = g_getenv ("REAL_NAME"), (_tmp11 == NULL ? NULL : g_strdup (_tmp11))), (self->priv->real_name = (g_free (self->priv->real_name), NULL)), _tmp12);
1166 if (self->priv->real_name != NULL) {
1167 gtk_entry_set_text (self->priv->name_entry, self->priv->real_name);
1168 }
1169 gtk_widget_show (((GtkWidget*) (self->priv->name_entry)));
1170 _tmp13 = NULL;
1171 hbox = (_tmp13 = vala_project_generator_create_hbox (self, "E-mail address:", size_group), (hbox == NULL ? NULL : (hbox = (g_object_unref (hbox), NULL))), _tmp13);
1172 _tmp14 = NULL;
1173 self->priv->email_entry = (_tmp14 = g_object_ref_sink (((GtkEntry*) (gtk_entry_new ()))), (self->priv->email_entry == NULL ? NULL : (self->priv->email_entry = (g_object_unref (self->priv->email_entry), NULL))), _tmp14);
1174 gtk_box_pack_start (((GtkBox*) (hbox)), ((GtkWidget*) (self->priv->email_entry)), TRUE, TRUE, ((guint) (0)));
1175 _tmp16 = NULL;
1176 _tmp15 = NULL;
1177 self->priv->email_address = (_tmp16 = (_tmp15 = g_getenv ("EMAIL_ADDRESS"), (_tmp15 == NULL ? NULL : g_strdup (_tmp15))), (self->priv->email_address = (g_free (self->priv->email_address), NULL)), _tmp16);
1178 if (self->priv->email_address != NULL) {
1179 gtk_entry_set_text (self->priv->email_entry, self->priv->email_address);
1180 }
1181 gtk_widget_show (((GtkWidget*) (self->priv->email_entry)));
1182 gtk_dialog_add_button (((GtkDialog*) (self)), GTK_STOCK_CANCEL, ((gint) (GTK_RESPONSE_CANCEL)));
1183 _tmp17 = NULL;
1184 ok_button = (_tmp17 = gtk_dialog_add_button (((GtkDialog*) (self)), "Create Project", ((gint) (GTK_RESPONSE_OK))), (_tmp17 == NULL ? NULL : g_object_ref (_tmp17)));
1185 gtk_widget_grab_default (ok_button);
1186 (vbox == NULL ? NULL : (vbox = (g_object_unref (vbox), NULL)));
1187 (size_group == NULL ? NULL : (size_group = (g_object_unref (size_group), NULL)));
1188 (label == NULL ? NULL : (label = (g_object_unref (label), NULL)));
1189 (hbox == NULL ? NULL : (hbox = (g_object_unref (hbox), NULL)));
1190 (ok_button == NULL ? NULL : (ok_button = (g_object_unref (ok_button), NULL)));
1191 }
1192 return obj;
1193 }
1194
1195
vala_project_generator_class_init(ValaProjectGeneratorClass * klass)1196 static void vala_project_generator_class_init (ValaProjectGeneratorClass * klass) {
1197 vala_project_generator_parent_class = g_type_class_peek_parent (klass);
1198 g_type_class_add_private (klass, sizeof (ValaProjectGeneratorPrivate));
1199 G_OBJECT_CLASS (klass)->constructor = vala_project_generator_constructor;
1200 G_OBJECT_CLASS (klass)->finalize = vala_project_generator_finalize;
1201 }
1202
1203
vala_project_generator_instance_init(ValaProjectGenerator * self)1204 static void vala_project_generator_instance_init (ValaProjectGenerator * self) {
1205 self->priv = VALA_PROJECT_GENERATOR_GET_PRIVATE (self);
1206 }
1207
1208
vala_project_generator_finalize(GObject * obj)1209 static void vala_project_generator_finalize (GObject* obj) {
1210 ValaProjectGenerator * self;
1211 self = VALA_PROJECT_GENERATOR (obj);
1212 (self->priv->project_folder_button == NULL ? NULL : (self->priv->project_folder_button = (g_object_unref (self->priv->project_folder_button), NULL)));
1213 (self->priv->project_type_combobox == NULL ? NULL : (self->priv->project_type_combobox = (g_object_unref (self->priv->project_type_combobox), NULL)));
1214 (self->priv->license_combobox == NULL ? NULL : (self->priv->license_combobox = (g_object_unref (self->priv->license_combobox), NULL)));
1215 (self->priv->name_entry == NULL ? NULL : (self->priv->name_entry = (g_object_unref (self->priv->name_entry), NULL)));
1216 (self->priv->email_entry == NULL ? NULL : (self->priv->email_entry = (g_object_unref (self->priv->email_entry), NULL)));
1217 self->priv->project_path = (g_free (self->priv->project_path), NULL);
1218 self->priv->project_name = (g_free (self->priv->project_name), NULL);
1219 self->priv->namespace_name = (g_free (self->priv->namespace_name), NULL);
1220 self->priv->make_name = (g_free (self->priv->make_name), NULL);
1221 self->priv->upper_case_make_name = (g_free (self->priv->upper_case_make_name), NULL);
1222 self->priv->real_name = (g_free (self->priv->real_name), NULL);
1223 self->priv->email_address = (g_free (self->priv->email_address), NULL);
1224 G_OBJECT_CLASS (vala_project_generator_parent_class)->finalize (obj);
1225 }
1226
1227
vala_project_generator_get_type(void)1228 static GType vala_project_generator_get_type (void) {
1229 static GType vala_project_generator_type_id = 0;
1230 if (vala_project_generator_type_id == 0) {
1231 static const GTypeInfo g_define_type_info = { sizeof (ValaProjectGeneratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_project_generator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaProjectGenerator), 0, (GInstanceInitFunc) vala_project_generator_instance_init, NULL };
1232 vala_project_generator_type_id = g_type_register_static (GTK_TYPE_DIALOG, "ValaProjectGenerator", &g_define_type_info, 0);
1233 }
1234 return vala_project_generator_type_id;
1235 }
1236
1237
_vala_array_free(gpointer array,gint array_length,GDestroyNotify destroy_func)1238 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1239 if (array != NULL && destroy_func != NULL) {
1240 int i;
1241 if (array_length >= 0)
1242 for (i = 0; i < array_length; i = i + 1) {
1243 if (((gpointer*) (array))[i] != NULL)
1244 destroy_func (((gpointer*) (array))[i]);
1245 }
1246 else
1247 for (i = 0; ((gpointer*) (array))[i] != NULL; i = i + 1) {
1248 destroy_func (((gpointer*) (array))[i]);
1249 }
1250 }
1251 g_free (array);
1252 }
1253
1254
1255
1256
1257