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