1 /* FileChooser.c */
2 /**********************************************************************************************************
3 Copyright (c) 2002-2013 Abdul-Rahman Allouche. All rights reserved
4 
5 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
6 documentation files (the Gabedit), to deal in the Software without restriction, including without limitation
7 the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
8 and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
9 
10   The above copyright notice and this permission notice shall be included in all copies or substantial portions
11   of the Software.
12 
13 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
14 TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
16 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
17 DEALINGS IN THE SOFTWARE.
18 ************************************************************************************************************/
19 
20 
21 #include "../../Config.h"
22 #include <GL/gl.h>
23 #include <GL/glu.h>
24 #include "../Common/Global.h"
25 #include "../Utils/UtilsInterface.h"
26 #include "../Utils/Utils.h"
27 #include "../Common/Windows.h"
28 #include "../Common/Exit.h"
29 #include "../Display/UtilsOrb.h"
30 
31 
32 /***************************************************************************************************************************/
file_chooser(gpointer data,gchar * title,GabEditTypeFile type,GabEditTypeWin typewin,GtkFileChooserAction action)33 GtkWidget* file_chooser(gpointer data,gchar* title,GabEditTypeFile type,GabEditTypeWin typewin, GtkFileChooserAction action)
34 {
35   GtkWidget *gabeditFileChooser;
36   gchar* patternsfiles[] = {	"*",
37 			    	"*.inp","*.com","*.mop","*.nw","*.psi",
38 	  			"*.log","*.out","*.fchk", "*.aux","*.wfx", "*.gab","*.ici","*.xyz","*.mol2","*.mol","*.tnk","*.pdb","*.hin","*.zmt","*.gzmt",
39 	  		    	"*.hf","*.gcube","*.cube","*.CUBE","*.grid","*.M2Msi","*.t41","*.dx","*.trj","*.irc","*.txt","*.xml","*.cif","*",
40 			    	NULL};
41   GCallback *func = (GCallback *)data;
42   gchar* temp = NULL;
43 
44   if(title)
45   	gabeditFileChooser = gabedit_file_chooser_new(title, action);
46   else
47   {
48 	  if(action == GTK_FILE_CHOOSER_ACTION_OPEN) gabeditFileChooser = gabedit_file_chooser_new(_("Open file"), action);
49 	  else gabeditFileChooser = gabedit_file_chooser_new(_("Save file"), action);
50   }
51 
52   if(type== GABEDIT_TYPEFILE_CUBEMOLPRO)
53   {
54 	  temp=patternsfiles[6];
55 	  patternsfiles[6]=patternsfiles[7];
56 	  patternsfiles[7]=temp;
57 	  temp = NULL;
58   };
59   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
60 
61    gabedit_file_chooser_set_filters(GABEDIT_FILE_CHOOSER(gabeditFileChooser), patternsfiles);
62    switch(type)
63    {
64 	   case GABEDIT_TYPEFILE_DALTON :
65 					   gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
66 					   temp = g_strdup_printf("%s.out",fileopen.projectname);
67 					   break;
68 	   case GABEDIT_TYPEFILE_DEMON :
69 					   gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
70 					   temp = g_strdup_printf("%s.out",fileopen.projectname);
71 					   break;
72 	   case GABEDIT_TYPEFILE_GAMESS :
73 					   gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.log");
74 					   temp = g_strdup_printf("%s.log",fileopen.projectname);
75 					   break;
76 	   case GABEDIT_TYPEFILE_FIREFLY :
77 					   gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.log");
78 					   temp = g_strdup_printf("%s.log",fileopen.projectname);
79 					   break;
80 	   case GABEDIT_TYPEFILE_GAUSSIAN :
81 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.log");
82 						temp = g_strdup_printf("%s.log",fileopen.projectname);
83 					  	break;
84 	   case GABEDIT_TYPEFILE_MOLCAS :
85 					   gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
86 						temp = g_strdup_printf("%s.out",fileopen.projectname);
87 					   break;
88 	   case GABEDIT_TYPEFILE_MOLPRO :
89 					    if(strstr(title,"geometry"))
90 					    	gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
91 					    else
92 					    	gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
93 
94 					    temp = g_strdup_printf("%s.out",fileopen.projectname);
95 					    break;
96 	   case GABEDIT_TYPEFILE_MOLPRO_LOG :
97 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.log");
98 
99 					    temp = g_strdup_printf("%s.log",fileopen.projectname);
100 					    break;
101 	   case GABEDIT_TYPEFILE_ORCA :
102 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
103 						temp = g_strdup_printf("%s.out",fileopen.projectname);
104 						break;
105 	   case GABEDIT_TYPEFILE_VASPOUTCAR :
106 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*");
107 						temp = g_strdup_printf("OUTCAR");
108 						break;
109 	   case GABEDIT_TYPEFILE_VASPXML :
110 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.xml");
111 						temp = g_strdup_printf("%s.xml",fileopen.projectname);
112 						break;
113 	   case GABEDIT_TYPEFILE_VASPPOSCAR :
114 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*");
115 						temp = g_strdup_printf("POSCAR");
116 						break;
117 	   case GABEDIT_TYPEFILE_CIF :
118 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.cif");
119 						temp = g_strdup_printf("%s.cif", fileopen.projectname);
120 						break;
121 	   case GABEDIT_TYPEFILE_QCHEM :
122 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
123 						temp = g_strdup_printf("%s.out",fileopen.projectname);
124 					  	break;
125 	   case GABEDIT_TYPEFILE_NWCHEM :
126 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
127 						temp = g_strdup_printf("%s.out",fileopen.projectname);
128 					  	break;
129 	   case GABEDIT_TYPEFILE_PSICODE :
130 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
131 						temp = g_strdup_printf("%s.out",fileopen.projectname);
132 					  	break;
133 	   case GABEDIT_TYPEFILE_MOPAC :
134 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
135 						temp = g_strdup_printf("%s.out",fileopen.projectname);
136 					  	break;
137 	   case GABEDIT_TYPEFILE_MOPAC_AUX :
138 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.aux");
139 						temp = g_strdup_printf("%s.aux",fileopen.projectname);
140 					  	break;
141 	   case GABEDIT_TYPEFILE_WFX :
142 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.wfx");
143 						temp = g_strdup_printf("%s.wfx",fileopen.projectname);
144 					  	break;
145 	   case GABEDIT_TYPEFILE_ADF :
146 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
147 						temp = g_strdup_printf("%s.out",fileopen.projectname);
148 					  	break;
149 	   case GABEDIT_TYPEFILE_MOLDEN :
150 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.molden");
151 					    temp = g_strdup_printf("%s.molden",fileopen.projectname);
152 					    break;
153 	   case GABEDIT_TYPEFILE_GABEDIT :
154 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.gab");
155 					    temp = g_strdup_printf("%s.gab",fileopen.projectname);
156 					    break;
157 	   case GABEDIT_TYPEFILE_MOBCAL :
158 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.mfj");
159 					    temp = g_strdup_printf("%s.mfj",fileopen.projectname);
160 					    break;
161 	   case GABEDIT_TYPEFILE_MPQC :
162 		   				gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.out");
163 						temp = g_strdup_printf("%s.out",fileopen.projectname);
164 					  	break;
165 	   case GABEDIT_TYPEFILE_XYZ :
166 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.xyz");
167 					    temp = g_strdup_printf("%s.xyz",fileopen.projectname);
168 					    break;
169 	   case GABEDIT_TYPEFILE_MOL2 :
170 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.mol2");
171 					    temp = g_strdup_printf("%s.mol2",fileopen.projectname);
172 					    break;
173 	   case GABEDIT_TYPEFILE_MOL :
174 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.mol");
175 					    temp = g_strdup_printf("%s.mol",fileopen.projectname);
176 					    break;
177 	   case GABEDIT_TYPEFILE_TINKER :
178 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.tnk");
179 					    temp = g_strdup_printf("%s.tnk",fileopen.projectname);
180 					    break;
181 	   case GABEDIT_TYPEFILE_PDB :
182 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.pdb");
183 					    temp = g_strdup_printf("%s.pdb",fileopen.projectname);
184 					    break;
185 	   case GABEDIT_TYPEFILE_HIN :
186 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.hin");
187 					    temp = g_strdup_printf("%s.hin",fileopen.projectname);
188 					    break;
189 	   case GABEDIT_TYPEFILE_AIMALL :
190 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.sum");
191 					    temp = g_strdup_printf("%s.sum",fileopen.projectname);
192 					    break;
193 	   case GABEDIT_TYPEFILE_GZMAT :
194 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.gzmt");
195 					    temp = g_strdup_printf("%s.gzmt",fileopen.projectname);
196 					    break;
197 	   case GABEDIT_TYPEFILE_MZMAT :
198 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.zmt");
199 					    temp = g_strdup_printf("%s.zmt",fileopen.projectname);
200 					    break;
201 	   case GABEDIT_TYPEFILE_CCHEMI :
202 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.ici");
203 					    temp = g_strdup_printf("%s.ici",fileopen.projectname);
204 					    break;
205 	   case GABEDIT_TYPEFILE_DEMONINPUT :
206 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.inp");
207 					    temp = g_strdup_printf("%s.inp",fileopen.projectname);
208 					    break;
209 	   case GABEDIT_TYPEFILE_GAMESSINPUT :
210 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.inp");
211 					    temp = g_strdup_printf("%s.inp",fileopen.projectname);
212 					    break;
213 	   case GABEDIT_TYPEFILE_FIREFLYINPUT :
214 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.inp");
215 					    temp = g_strdup_printf("%s.inp",fileopen.projectname);
216 					    break;
217 	   case GABEDIT_TYPEFILE_GAUSSIANINPUT :
218 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.com");
219 					    temp = g_strdup_printf("%s.com",fileopen.projectname);
220 					    break;
221 	   case GABEDIT_TYPEFILE_GAUSSIAN_FCHK :
222 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.fchk");
223 					    temp = g_strdup_printf("%s.fchk",fileopen.projectname);
224 					    break;
225 	   case GABEDIT_TYPEFILE_MOLCASINPUT :
226 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.com");
227 					    temp = g_strdup_printf("%s.com",fileopen.projectname);
228 					    break;
229 	   case GABEDIT_TYPEFILE_MOLPROINPUT :
230 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.com");
231 					    temp = g_strdup_printf("%s.com",fileopen.projectname);
232 					    break;
233 	   case GABEDIT_TYPEFILE_ORCAINPUT :
234 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.inp");
235 					    temp = g_strdup_printf("%s.inp",fileopen.projectname);
236 					    break;
237 	   case GABEDIT_TYPEFILE_QCHEMINPUT :
238 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.inp");
239 					    temp = g_strdup_printf("%s.inp",fileopen.projectname);
240 					    break;
241 	   case GABEDIT_TYPEFILE_NWCHEMINPUT :
242 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.nw");
243 					    temp = g_strdup_printf("%s.nw",fileopen.projectname);
244 					    break;
245 	   case GABEDIT_TYPEFILE_PSICODEINPUT :
246 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.psi");
247 					    temp = g_strdup_printf("%s.psi",fileopen.projectname);
248 					    break;
249 	   case GABEDIT_TYPEFILE_MOPACINPUT :
250 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.mop");
251 					    temp = g_strdup_printf("%s.mop",fileopen.projectname);
252 					    break;
253 	   case GABEDIT_TYPEFILE_JPEG :
254 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.jpg");
255 					    temp = g_strdup_printf("%s.jpg",fileopen.projectname);
256 					    break;
257 	   case GABEDIT_TYPEFILE_PPM :
258 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.ppm");
259 					    temp = g_strdup_printf("%s.ppm",fileopen.projectname);
260 					    break;
261 	   case GABEDIT_TYPEFILE_BMP :
262 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.bmp");
263 					    temp = g_strdup_printf("%s.bmp",fileopen.projectname);
264 					    break;
265 	   case GABEDIT_TYPEFILE_PNG :
266 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.png");
267 					    temp = g_strdup_printf("%s.png",fileopen.projectname);
268 					    break;
269 	   case GABEDIT_TYPEFILE_TIF :
270 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.tif");
271 					    temp = g_strdup_printf("%s.tif",fileopen.projectname);
272 					    break;
273 	   case GABEDIT_TYPEFILE_PS :
274 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.ps");
275 					    temp = g_strdup_printf("%s.ps",fileopen.projectname);
276 				      	    break;
277 	   case GABEDIT_TYPEFILE_CUBEGAUSS :
278 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.cube");
279 					    temp = g_strdup_printf("%s.cube",fileopen.projectname);
280 				      	    break;
281 	   case GABEDIT_TYPEFILE_CUBEMOLPRO :
282 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.CUBE");
283 					    temp = g_strdup_printf("%s.CUBE",fileopen.projectname);
284 				      	    break;
285 	   case GABEDIT_TYPEFILE_CUBEADF :
286 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.t41");
287 					    temp = g_strdup_printf("%s.t41",fileopen.projectname);
288 				      	    break;
289 	   case GABEDIT_TYPEFILE_MOLCASGRID :
290 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.grid");
291 					    temp = g_strdup_printf("%s.grid",fileopen.projectname);
292 				      	    break;
293 	   case GABEDIT_TYPEFILE_CUBEMOLCAS :
294 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.cube");
295 					    temp = g_strdup_printf("%s.cube",fileopen.projectname);
296 				      	    break;
297 	   case GABEDIT_TYPEFILE_CUBEQCHEM :
298 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.hf");
299 					    temp = g_strdup_printf("%s.hf",fileopen.projectname);
300 				      	    break;
301 	   case GABEDIT_TYPEFILE_CUBEGABEDIT :
302 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.gcube");
303 					    temp = g_strdup_printf("%s.gcube",fileopen.projectname);
304 				      	    break;
305 	   case GABEDIT_TYPEFILE_CUBEDX :
306 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.dx");
307 					    temp = g_strdup_printf("%s.dx",fileopen.projectname);
308 				      	    break;
309 	   case GABEDIT_TYPEFILE_TRJ :
310 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.trj");
311 					    temp = g_strdup_printf("%s.trj",fileopen.projectname);
312 				      	    break;
313 	   case GABEDIT_TYPEFILE_GAMESSIRC :
314 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.irc");
315 					    temp = g_strdup_printf("%s.irc",fileopen.projectname);
316 				      	    break;
317 	   case GABEDIT_TYPEFILE_XML :
318 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.xml");
319 					    temp = g_strdup_printf("%s.xml",fileopen.projectname);
320 				      	    break;
321 	   case GABEDIT_TYPEFILE_TXT :
322 					    gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.txt");
323 					    temp = g_strdup_printf("%s.txt",fileopen.projectname);
324 				      	    break;
325 	default :break;
326    }
327   if(temp != NULL)
328   {
329 	if(lastdirectory)
330 	{
331 		gchar* t = g_strdup_printf("%s%s%s",lastdirectory,G_DIR_SEPARATOR_S,temp);
332 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
333 		g_free(t);
334 		g_free(temp);
335 	}
336 	else
337 	{
338 		if(fileopen.localdir)
339 		{
340 			gchar* t = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,temp);
341 			gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
342 			g_free(t);
343 			g_free(temp);
344 		}
345 		else
346 		{
347 			gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),temp);
348 			g_free(temp);
349 		}
350 	}
351   }
352   else
353   {
354 	if(lastdirectory)
355 	{
356 		gchar* t = g_strdup_printf("%s%sdump.txt",lastdirectory,G_DIR_SEPARATOR_S);
357 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
358 		g_free(t);
359 	}
360 	else
361 		if(fileopen.localdir)
362 		{
363 			gchar* t = g_strdup_printf("%s%sdump.txt",fileopen.localdir,G_DIR_SEPARATOR_S);
364 			gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
365 			g_free(t);
366 		}
367   }
368   	if(typewin==GABEDIT_TYPEWIN_ORB)
369 	{
370 	  if(action == GTK_FILE_CHOOSER_ACTION_OPEN) add_glarea_child(gabeditFileChooser,_("Open file "));
371 	  else add_glarea_child(gabeditFileChooser,_("Save file "));
372 	}
373 	else
374 	{
375   		add_button_windows(_(" Open file "),gabeditFileChooser);
376   		g_signal_connect(G_OBJECT(gabeditFileChooser), "delete_event",(GCallback)destroy_button_windows,NULL);
377 	}
378 
379   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (func),GTK_OBJECT(gabeditFileChooser));
380 
381   if(typewin==GABEDIT_TYPEWIN_ORB)
382   	g_signal_connect (gabeditFileChooser, "response", G_CALLBACK (delete_child), GTK_OBJECT(gabeditFileChooser));
383   else
384   	g_signal_connect (gabeditFileChooser, "response", G_CALLBACK (destroy_button_windows),GTK_OBJECT(gabeditFileChooser));
385   g_signal_connect_after (gabeditFileChooser, "response", G_CALLBACK (gtk_widget_destroy),GTK_OBJECT(gabeditFileChooser));
386 
387   gtk_widget_show(gabeditFileChooser);
388 
389   return gabeditFileChooser;
390 
391 }
392 /***************************************************************************************************************************/
file_chooser_open(gpointer data,gchar * title,GabEditTypeFile type,GabEditTypeWin typewin)393 GtkWidget* file_chooser_open(gpointer data,gchar* title,GabEditTypeFile type,GabEditTypeWin typewin)
394 {
395 	return file_chooser(data, title, type, typewin, GTK_FILE_CHOOSER_ACTION_OPEN);
396 }
397 /***************************************************************************************************************************/
file_chooser_save(gpointer data,gchar * title,GabEditTypeFile type,GabEditTypeWin typewin)398 GtkWidget* file_chooser_save(gpointer data,gchar* title,GabEditTypeFile type,GabEditTypeWin typewin)
399 {
400 	return file_chooser(data, title, type, typewin, GTK_FILE_CHOOSER_ACTION_SAVE);
401 }
402 /***************************************************************************************************************************/
choose_file_to_open()403 void choose_file_to_open()
404 {
405   GtkWidget *gabeditFileChooser;
406   gchar* patternsfiles[] = {"*.com","*.mop","*.inp","*.nw","*.psi","*.xyz","*.zmt","*.gzmt","*",NULL};
407 
408   gabeditFileChooser = gabedit_file_chooser_new(_("Open file"), GTK_FILE_CHOOSER_ACTION_OPEN);
409   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
410 
411   if(strcmp(fileopen.datafile,"NoName"))
412   {
413 	  if(fileopen.localdir)
414 	  {
415 		gchar* t = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.datafile);
416 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
417 		g_free(t);
418 
419 	  }
420 	  else
421 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser), fileopen.datafile);
422   }
423 
424    gabedit_file_chooser_set_filters(GABEDIT_FILE_CHOOSER(gabeditFileChooser), patternsfiles);
425     if(iprogram == PROG_IS_GAMESS  || iprogram == PROG_IS_FIREFLY || iprogram == PROG_IS_DEMON || iprogram == PROG_IS_ORCA  || iprogram == PROG_IS_OTHER)
426    	gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.inp");
427     else if(iprogram == PROG_IS_MOPAC) gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.mop");
428     else if(iprogram == PROG_IS_PSICODE) gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.psi");
429     else if(iprogram == PROG_IS_NWCHEM) gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.nw");
430     else gabedit_file_chooser_set_filter(GABEDIT_FILE_CHOOSER(gabeditFileChooser),"*.com");
431 
432 
433 
434   g_signal_connect(G_OBJECT(gabeditFileChooser), "delete_event",(GCallback)destroy_button_windows,NULL);
435 
436   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK (show_doc), GTK_OBJECT(gabeditFileChooser));
437   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK (destroy_button_windows), GTK_OBJECT(gabeditFileChooser));
438   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK (gtk_widget_destroy), GTK_OBJECT(gabeditFileChooser));
439 
440   add_button_windows(_(" Open file "),gabeditFileChooser);
441   gtk_widget_show(gabeditFileChooser);
442 }
443 /********************************************************************************/
choose_file_to_insert()444 void choose_file_to_insert()
445 {
446   GtkWidget *gabeditFileChooser;
447 
448   gabeditFileChooser = gabedit_file_chooser_new(_("Include file"), GTK_FILE_CHOOSER_ACTION_OPEN);
449   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
450   g_signal_connect(G_OBJECT(gabeditFileChooser), "delete_event",(GCallback)destroy_button_windows,NULL);
451   if(fileopen.localdir)
452   {
453 	gchar* t = g_strdup_printf("%s%s",fileopen.localdir,G_DIR_SEPARATOR_S);
454 	gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
455 	g_free(t);
456   }
457 
458   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (insert_doc), GTK_OBJECT(gabeditFileChooser));
459   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK (data_modify),NULL);
460   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (destroy_button_windows), GTK_OBJECT(gabeditFileChooser));
461   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (gtk_widget_destroy), GTK_OBJECT(gabeditFileChooser));
462 
463   add_button_windows(_(" Include file "),gabeditFileChooser);
464   gtk_widget_show(gabeditFileChooser);
465 }
466 /********************************************************************************/
choose_file_to_save()467 void choose_file_to_save()
468 {
469   GtkWidget *gabeditFileChooser;
470 
471   gabeditFileChooser = gabedit_file_chooser_new("Save file", GTK_FILE_CHOOSER_ACTION_SAVE);
472   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
473 
474   if(strcmp(fileopen.datafile,"NoName"))
475   {
476 	  if(fileopen.localdir)
477 	  {
478 		gchar* t = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.datafile);
479 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
480 		g_free(t);
481 
482 	  }
483 	  else
484 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),fileopen.datafile);
485   }
486   g_signal_connect(G_OBJECT(gabeditFileChooser), "delete_event",(GCallback)destroy_button_windows,NULL);
487 
488   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK(enreg_selec_doc) , GTK_OBJECT(gabeditFileChooser));
489   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (destroy_button_windows), GTK_OBJECT(gabeditFileChooser));
490   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (gtk_widget_destroy), GTK_OBJECT(gabeditFileChooser));
491 
492   add_button_windows(" Save file ",gabeditFileChooser);
493   gtk_widget_show(gabeditFileChooser);
494 }
495 /********************************************************************************/
choose_file_to_save_end()496 void choose_file_to_save_end()
497 {
498   GtkWidget *gabeditFileChooser;
499 
500   gabeditFileChooser = gabedit_file_chooser_new(_("Save file"), GTK_FILE_CHOOSER_ACTION_SAVE);
501   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
502   gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),fileopen.datafile);
503 
504   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK(enreg_selec_doc) , GTK_OBJECT(gabeditFileChooser));
505   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK(ExitDlg), GTK_OBJECT(gabeditFileChooser));
506   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK(gtk_widget_destroy) , GTK_OBJECT(gabeditFileChooser));
507 
508   gtk_widget_show(gabeditFileChooser);
509 }
510 /********************************************************************************/
Save_YesNo()511 void Save_YesNo()
512 {
513     GtkWidget *DialogueMessage = NULL;
514     GtkWidget *Label, *Bouton;
515     GtkWidget *frame, *vboxframe;
516     gchar *t;
517 
518 
519     DialogueMessage = gtk_dialog_new();
520 
521 
522     gtk_window_set_title(GTK_WINDOW(DialogueMessage),_("Question"));
523     gtk_window_set_modal (GTK_WINDOW (DialogueMessage), TRUE);
524     gtk_window_set_transient_for(GTK_WINDOW(DialogueMessage),GTK_WINDOW(Fenetre));
525     gtk_window_set_position(GTK_WINDOW(DialogueMessage),GTK_WIN_POS_CENTER);
526 
527 
528     g_signal_connect(G_OBJECT(DialogueMessage), "delete_event", (GCallback)gtk_widget_destroy, NULL);
529    frame = gtk_frame_new (NULL);
530    gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
531 
532    g_object_ref (frame);
533    g_object_set_data_full (G_OBJECT (DialogueMessage), "frame", frame,(GDestroyNotify) g_object_unref);
534    gtk_container_set_border_width (GTK_CONTAINER (frame), 10);
535    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(DialogueMessage)->vbox), frame,TRUE,TRUE,0);
536 
537   gtk_widget_show (frame);
538 
539   vboxframe = create_vbox(frame);
540 
541       gtk_widget_realize(DialogueMessage);
542 
543     t=get_name_file(fileopen.datafile);
544     t=g_strdup_printf(_("\"%s\" has been modified. Do you want to save it ?"),t);
545     Label = create_label_with_pixmap(DialogueMessage,t,_("Question"));
546     g_free(t);
547     gtk_box_pack_start( GTK_BOX(vboxframe), Label,TRUE,TRUE,0);
548 
549     /* the Cancel button */
550     gtk_widget_realize(DialogueMessage);
551     Bouton = create_button(DialogueMessage,_("Cancel"));
552     gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area), Bouton,TRUE,TRUE,0);
553     g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
554     GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
555     gtk_widget_grab_default(Bouton);
556 
557     /* the No button */
558     Bouton = create_button(DialogueMessage,_("No"));
559     gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area), Bouton,TRUE,TRUE,0);
560     g_signal_connect(G_OBJECT(Bouton), "clicked", (GCallback)ExitDlg,NULL);
561     GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
562     g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
563 
564     /* the Yes button */
565     Bouton = create_button(DialogueMessage,"Yes");
566     gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area), Bouton,TRUE,TRUE,0);
567     g_signal_connect(G_OBJECT(Bouton), "clicked", (GCallback)choose_file_to_save_end,NULL);
568     g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
569     GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
570 
571 
572 
573     gtk_widget_show_all(DialogueMessage);
574 }
575 /********************************************************************************/
set_entry_file(GtkWidget * gabeditFileChooser,gint response_id)576 void set_entry_file(GtkWidget* gabeditFileChooser, gint response_id)
577 {
578   GtkWidget *entry;
579   gchar *file;
580   if( response_id != GTK_RESPONSE_OK) return;
581   entry = (GtkWidget*)(g_object_get_data(G_OBJECT(gabeditFileChooser),"Entry"));
582   file = gabedit_file_chooser_get_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
583   gtk_entry_set_text(GTK_ENTRY(entry),file);
584 }
585 /********************************************************************************/
set_entry_selected_file(GtkWidget * hbox)586 void set_entry_selected_file(GtkWidget* hbox)
587 {
588   GtkWidget *gabeditFileChooser;
589   GtkWidget *entry = (GtkWidget*)(g_object_get_data(G_OBJECT(hbox),"Entry"));
590   GtkWidget *Win = (GtkWidget*)(g_object_get_data(G_OBJECT(hbox),"Window"));
591   gchar** patterns = (gchar**)(g_object_get_data(G_OBJECT(hbox),"Patterns"));
592 
593   gabeditFileChooser = gabedit_file_chooser_new(_("File selection"), GTK_FILE_CHOOSER_ACTION_OPEN);
594   gtk_window_set_modal (GTK_WINDOW (gabeditFileChooser), TRUE);
595   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
596   gabedit_file_chooser_set_filters(GABEDIT_FILE_CHOOSER(gabeditFileChooser), patterns);
597   add_child(Win,gabeditFileChooser,gtk_widget_destroy,_(" File selction "));
598   g_signal_connect(G_OBJECT(gabeditFileChooser),"delete_event",(GCallback)delete_child,NULL);
599 
600 
601 
602   g_object_set_data(G_OBJECT (gabeditFileChooser), "Entry", entry);
603   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (set_entry_file), GTK_OBJECT(gabeditFileChooser));
604   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (delete_child), GTK_OBJECT(gabeditFileChooser));
605 
606   gtk_widget_show(gabeditFileChooser);
607 }
608 /********************************************************************************/
choose_file_to_create(gchar * title,GCallback applyFunc)609 GtkWidget* choose_file_to_create(gchar* title, GCallback applyFunc)
610 {
611   GtkWidget *gabeditFileChooser;
612 
613   gabeditFileChooser = gabedit_file_chooser_new(title, GTK_FILE_CHOOSER_ACTION_SAVE);
614   gabedit_file_chooser_hide_hidden(GABEDIT_FILE_CHOOSER(gabeditFileChooser));
615 
616   if(strcmp(fileopen.datafile,"NoName"))
617   {
618 	  if(fileopen.localdir)
619 	  {
620 		gchar* t = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.datafile);
621 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),t);
622 		g_free(t);
623 
624 	  }
625 	  else
626 		gabedit_file_chooser_set_current_file(GABEDIT_FILE_CHOOSER(gabeditFileChooser),fileopen.datafile);
627   }
628   g_signal_connect(G_OBJECT(gabeditFileChooser), "delete_event",(GCallback)destroy_button_windows,NULL);
629 
630   g_signal_connect (gabeditFileChooser, "response", G_CALLBACK(applyFunc) , GTK_OBJECT(gabeditFileChooser));
631   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (destroy_button_windows), GTK_OBJECT(gabeditFileChooser));
632   g_signal_connect (gabeditFileChooser, "response",  G_CALLBACK (gtk_widget_destroy), GTK_OBJECT(gabeditFileChooser));
633 
634   add_button_windows(title,gabeditFileChooser);
635   gtk_widget_show(gabeditFileChooser);
636   return gabeditFileChooser;
637 }
638