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