1 /* UtilsInterface.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 <stdlib.h>
23 #include <ctype.h>
24 #include <unistd.h>
25
26 #include "../Common/Global.h"
27 #include "../Utils/Constants.h"
28 #include "../Gaussian/GaussGlobal.h"
29 #include "../Files/FileChooser.h"
30 #include "../Gamess/Gamess.h"
31 #include "../FireFly/FireFly.h"
32 #include "../Molcas/Molcas.h"
33 #include "../Molpro/Molpro.h"
34 #include "../MPQC/MPQC.h"
35 #include "../DeMon/DeMon.h"
36 #include "../Orca/Orca.h"
37 #include "../NWChem/NWChem.h"
38 #include "../Psicode/Psicode.h"
39 #include "../QChem/QChem.h"
40 #include "../Mopac/Mopac.h"
41 #include "../Gaussian/Gaussian.h"
42 #include "../Geometry/GeomGlobal.h"
43 #include "../Utils/UtilsInterface.h"
44 #include "../Geometry/InterfaceGeom.h"
45 #include "../Utils/Utils.h"
46 #include "../Utils/GabeditTextEdit.h"
47 #include "../Geometry/ResultsAnalise.h"
48 #include "../Geometry/EnergiesCurves.h"
49 #include "../Common/Windows.h"
50 #include "../Files/ListeFiles.h"
51 #include "../Geometry/GeomXYZ.h"
52 #include "../Geometry/GeomZmatrix.h"
53 #include "../Common/SplashScreen.h"
54 #include "../Display/ViewOrb.h"
55 #include "../Geometry/Fragments.h"
56 #include "../Geometry/DrawGeom.h"
57 #include "../Common/Exit.h"
58 #include "../Molcas/MolcasVariables.h"
59 #include "../Molcas/MolcasGateWay.h"
60 #include "../Utils/GabeditXYPlot.h"
61
62 #include "../../pixmaps/Ok.xpm"
63 #include "../../pixmaps/Cancel.xpm"
64 #include "../../pixmaps/Yes.xpm"
65 #include "../../pixmaps/No.xpm"
66 #include "../../pixmaps/SaveMini.xpm"
67 #include "../../pixmaps/Close.xpm"
68 #include "../../pixmaps/Apply.xpm"
69 #include "../../pixmaps/Question.xpm"
70 #include "../../pixmaps/Warning.xpm"
71 #include "../../pixmaps/Error.xpm"
72 #include "../../pixmaps/Info.xpm"
73 #include "../../pixmaps/A0p.xpm"
74 #include "../../pixmaps/A0d.xpm"
75 #include "../../pixmaps/Open.xpm"
76 #include "../../pixmaps/Gabedit.xpm"
77 #include "../../pixmaps/Print.xpm"
78 #include "../../pixmaps/Next.xpm"
79 #include "../../pixmaps/Stop.xpm"
80 #include "../../pixmaps/Play.xpm"
81 #include "../Common/StockIcons.h"
82
83 #include "../Spectrum/IRSpectrum.h"
84 #include "../Spectrum/RamanSpectrum.h"
85
86
87 /********************************************************************************/
destroy_popup(gpointer data)88 static gint destroy_popup(gpointer data)
89 {
90 gtk_widget_hide(GTK_WIDGET(data));
91 gtk_object_destroy(GTK_OBJECT(data));
92 return FALSE;
93 }
94 /********************************************************************************/
create_popup_win(gchar * label)95 void create_popup_win(gchar* label)
96 {
97 GtkWidget *MainFrame;
98 GtkWidget *Label;
99 GtkWidget *hbox = gtk_hbox_new(0,FALSE);
100
101
102 MainFrame = gtk_window_new (GTK_WINDOW_POPUP);
103
104 /* center it on the screen*/
105 gtk_window_set_position(GTK_WINDOW (MainFrame), GTK_WIN_POS_MOUSE);
106
107 /* set up key and mound button press to hide splash screen*/
108
109 gtk_widget_add_events(MainFrame,
110 GDK_BUTTON_PRESS_MASK|
111 GDK_BUTTON_RELEASE_MASK|
112 GDK_KEY_PRESS_MASK);
113
114 g_signal_connect(G_OBJECT(MainFrame),"button_press_event",
115 G_CALLBACK(gtk_widget_destroy),NULL);
116 g_signal_connect(G_OBJECT(MainFrame),"key_press_event",
117 G_CALLBACK(gtk_widget_destroy),NULL);
118 gtk_widget_realize(MainFrame);
119
120 Label = gtk_label_new(label);
121 gtk_label_set_justify(GTK_LABEL(Label),GTK_JUSTIFY_LEFT);
122 set_font (Label,"helvetica bold 24");
123 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0);
124 gtk_widget_show(Label);
125 gtk_widget_show(hbox);
126 gtk_container_add (GTK_CONTAINER (MainFrame), hbox);
127 gtk_widget_show(MainFrame);
128
129 /* force it to draw now.*/
130 gdk_flush();
131
132 /* go into main loop, processing events.*/
133 while(gtk_events_pending())
134 gtk_main_iteration();
135
136 /* after 3 seconds, destroy the splash screen.*/
137 g_timeout_add( 1000, destroy_popup, MainFrame );
138 }
139 /********************************************************************************/
init_child(GtkWidget * widget,GabeditSignalFunc func,gchar * buttonlabel)140 void init_child(GtkWidget *widget, GabeditSignalFunc func,gchar *buttonlabel)
141 {
142 WidgetChildren *children = g_malloc(sizeof(WidgetChildren));
143 g_object_set_data(G_OBJECT (widget), "Children", children);
144 children->nchildren = 1;
145 children->children = g_malloc(sizeof(GtkWidget*));
146 children->destroychildren = g_malloc(sizeof(GCallback));
147 children->children[0] = widget;
148 g_object_set_data(G_OBJECT(children->children[0]),"Parent",widget);
149 children->destroychildren[0] = func;
150 if(buttonlabel)
151 add_button_windows(buttonlabel,widget);
152 }
153 /********************************************************************************/
add_child(GtkWidget * widget,GtkWidget * childwidget,GabeditSignalFunc func,gchar * buttonlabel)154 void add_child(GtkWidget *widget,GtkWidget *childwidget,GabeditSignalFunc func,gchar *buttonlabel)
155 {
156 WidgetChildren *children = (WidgetChildren *)g_object_get_data(G_OBJECT(widget),"Children");
157 children->nchildren++;
158 children->children = g_realloc(children->children,children->nchildren*sizeof(GtkWidget*));
159 children->destroychildren = g_realloc(children->destroychildren,children->nchildren*sizeof(GCallback));
160 children->children[children->nchildren-1] = childwidget;
161 g_object_set_data(G_OBJECT(children->children[children->nchildren-1]),"Parent",widget);
162 children->destroychildren[children->nchildren-1] = func;
163 if(buttonlabel)
164 add_button_windows(buttonlabel,childwidget);
165 }
166 /********************************************************************************/
delete_child(GtkWidget * childwidget)167 void delete_child(GtkWidget *childwidget)
168 {
169 GtkWidget *widget = NULL;
170 WidgetChildren *children;
171 gint i;
172 gint k;
173
174 widget = GTK_WIDGET(g_object_get_data(G_OBJECT(childwidget),"Parent"));
175 if(!widget)
176 return;
177 children = (WidgetChildren *)g_object_get_data(G_OBJECT(widget),"Children");
178
179 k = -1;
180 for(i=0;i<children->nchildren;i++)
181 {
182 if(children->children[i]==childwidget)
183 {
184 destroy_button_windows(children->children[i]);
185 children->destroychildren[i](children->children[i]);
186 children->children[i] = NULL;
187 k = i;
188 break;
189 }
190 }
191 if(k!=-1)
192 {
193 for(i=k;i<children->nchildren-1;i++)
194 {
195 children->children[i] = children->children[i+1];
196 children->destroychildren[i] = children->destroychildren[i+1];
197 }
198 children->nchildren--;
199 children->children = g_realloc(children->children,children->nchildren*sizeof(GtkWidget*));
200 children->destroychildren = g_realloc(children->destroychildren,children->nchildren*sizeof(GCallback));
201 }
202 }
203 /********************************************************************************/
delete_all_children(GtkWidget * widget)204 void delete_all_children(GtkWidget *widget)
205 {
206 WidgetChildren *children;
207 gint i;
208
209 if(!widget)
210 return;
211 children = (WidgetChildren *)g_object_get_data(G_OBJECT(widget),"Children");
212 for(i=1;i<children->nchildren;i++)
213 {
214 if(children->children[i])
215 {
216 destroy_button_windows(children->children[i]);
217 children->destroychildren[i](children->children[i]);
218 children->children[i] = NULL;
219 }
220 }
221 children->nchildren = 1;
222 children->children = g_realloc(children->children,children->nchildren*sizeof(GtkWidget*));
223 children->destroychildren = g_realloc(children->destroychildren,children->nchildren*sizeof(GCallback));
224
225 }
226 /********************************************************************************/
destroy_children(GtkWidget * widget)227 void destroy_children(GtkWidget *widget)
228 {
229 WidgetChildren *children = (WidgetChildren *)g_object_get_data(G_OBJECT(widget),"Children");
230 gint i;
231 for(i=children->nchildren-1;i>=0;i--)
232 {
233 if(children->children[i])
234 {
235 destroy_button_windows(children->children[i]);
236 children->destroychildren[i](children->children[i]);
237 }
238 }
239 g_free(children->children);
240 g_free(children->destroychildren);
241 g_free(children);
242 }
243 /********************************************************************************/
244 /* create_pixmap, convenience function to create a pixmap widget, from data */
create_pixmap(GtkWidget * widget,gchar ** data)245 GtkWidget *create_pixmap(GtkWidget *widget, gchar **data)
246 {
247 GtkStyle *style;
248 GdkBitmap *mask;
249 GdkPixmap *gdk_pixmap;
250 GtkWidget *gtk_pixmap;
251
252 style = gtk_widget_get_style(widget);
253 g_assert(style != NULL);
254
255 gdk_pixmap = gdk_pixmap_create_from_xpm_d(widget->window,&mask, &style->bg[GTK_STATE_NORMAL],data);
256 g_assert(gdk_pixmap != NULL);
257 gtk_pixmap = gtk_image_new_from_pixmap(gdk_pixmap, mask);
258
259 g_assert(gtk_pixmap != NULL);
260 gtk_widget_show(gtk_pixmap);
261
262 return(gtk_pixmap);
263 }
264 /********************************************************************************/
get_pixmap(GtkWidget * widget,gushort red,gushort green,gushort blue)265 GdkPixmap *get_pixmap(GtkWidget *widget,gushort red,gushort green,gushort blue)
266 {
267 GdkPixmap *pixmap = NULL;
268 GdkGC *gc = NULL;
269 gint width = ScreenHeight/20;
270 gint height = ScreenHeight/50;
271 GdkColormap *colormap;
272 GdkColor Color;
273
274 gc = gdk_gc_new(widget->window);
275 Color.red = red;
276 Color.green = green;
277 Color.blue = blue;
278
279 pixmap = gdk_pixmap_new(widget->window,width,height, -1);
280 gdk_draw_rectangle (pixmap,
281 widget->style->black_gc,
282 TRUE,
283 0, 0, width, height);
284 colormap = gdk_drawable_get_colormap(widget->window);
285 gdk_colormap_alloc_color(colormap,&Color,FALSE,TRUE);
286 gdk_gc_set_foreground(gc,&Color);
287 gdk_draw_rectangle (pixmap,
288 gc,
289 TRUE,
290 1, 1, width-1, height-1);
291
292 g_object_unref(gc);
293 return pixmap;
294 }
295 /********************************************************************************/
create_hbox_pixmap_color(GtkWidget * widget,gushort red,gushort green,gushort blue)296 GtkWidget *create_hbox_pixmap_color(GtkWidget *widget,gushort red,gushort green,gushort blue)
297 {
298 GdkBitmap *mask = NULL;
299 GdkPixmap *gdk_pixmap;
300 GtkWidget *gtk_pixmap;
301 GtkWidget *hbox;
302
303 hbox = gtk_hbox_new (TRUE, 0);
304
305 gdk_pixmap = get_pixmap(widget,red,green,blue);
306 gtk_pixmap = gtk_image_new_from_pixmap(gdk_pixmap, mask);
307
308 g_object_unref(gdk_pixmap);
309
310
311 gtk_box_pack_start (GTK_BOX (hbox), gtk_pixmap, TRUE, TRUE, 1);
312
313 return hbox ;
314 }
315 /********************************************************************************/
create_button_pixmap_color(GtkWidget * widget,gushort red,gushort green,gushort blue)316 GtkWidget *create_button_pixmap_color(GtkWidget *widget,gushort red,gushort green,gushort blue)
317 {
318 GtkWidget *hbox = create_hbox_pixmap_color(widget,red,green,blue);
319 GtkWidget *Button = gtk_button_new();
320
321 gtk_container_add(GTK_CONTAINER(Button),hbox);
322 gtk_widget_show (hbox);
323 g_object_set_data(G_OBJECT (Button), "Hbox", hbox);
324
325 return Button ;
326 }
327 /********************************************************************************/
create_radio_button_pixmap(GtkWidget * widget,gchar ** data,gchar * string,GtkWidget * oldbutton)328 GtkWidget *create_radio_button_pixmap(GtkWidget *widget, gchar **data,gchar *string,GtkWidget *oldbutton)
329 {
330 GtkStyle *style;
331 GdkBitmap *mask;
332 GdkPixmap *gdk_pixmap;
333 GtkWidget *gtk_pixmap;
334 GtkWidget *Button;
335 GtkWidget *hbox;
336 GtkWidget *Label = NULL;
337
338 hbox = gtk_hbox_new (TRUE, 0);
339 g_object_ref (hbox);
340 gtk_widget_show (hbox);
341
342
343 style = gtk_widget_get_style(widget);
344 g_assert(style != NULL);
345
346 gdk_pixmap = gdk_pixmap_create_from_xpm_d(widget->window,
347 &mask, &style->bg[GTK_STATE_NORMAL],data);
348 g_assert(gdk_pixmap != NULL);
349 gtk_pixmap = gtk_image_new_from_pixmap(gdk_pixmap, mask);
350
351 g_object_unref(gdk_pixmap);
352 g_object_unref(mask);
353
354 g_assert(gtk_pixmap != NULL);
355 /* gtk_widget_show(gtk_pixmap);*/
356
357 /*
358 if(oldbutton)
359 Button = gtk_radio_button_new(gtk_radio_button_group (GTK_RADIO_BUTTON (oldbutton)));
360 else
361 Button = gtk_radio_button_new(NULL);
362 */
363 Button = gtk_toggle_button_new();
364
365 gtk_container_add(GTK_CONTAINER(Button),hbox);
366 if(string)
367 Label = gtk_label_new(string);
368 gtk_box_pack_start (GTK_BOX (hbox), gtk_pixmap, FALSE, FALSE, 1);
369 if(string)
370 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 1);
371
372 return Button ;
373 }
374 /********************************************************************************/
set_icon_default()375 void set_icon_default()
376 {
377 GdkPixbuf *pixbuf;
378
379 pixbuf = gdk_pixbuf_new_from_xpm_data((const char**)gabedit_xpm);
380 gtk_window_set_default_icon (pixbuf);
381 }
382 /********************************************************************************/
set_icone(GtkWidget * widget)383 void set_icone(GtkWidget *widget)
384 {
385 GtkStyle *style;
386 GdkBitmap *mask;
387 GdkPixmap *gdk_pixmap;
388
389
390 style = gtk_widget_get_style(widget);
391 gdk_pixmap = gdk_pixmap_create_from_xpm_d (widget->window,&mask, &style->bg[GTK_STATE_NORMAL],gabedit_xpm);
392 gdk_window_set_icon(widget->window,NULL,gdk_pixmap,mask);
393 }
394 /********************************************************************************/
data_modify(gboolean mod)395 void data_modify(gboolean mod)
396 {
397 if(mod)
398 imodif = DATA_MOD_YES;
399 else
400 imodif = DATA_MOD_NO;
401 change_all_labels();
402 }
403 /********************************************************************************/
create_label_pixmap(GtkWidget * widget,gchar ** data,gchar * string)404 GtkWidget *create_label_pixmap(GtkWidget *widget, gchar **data,gchar *string)
405 {
406 GtkStyle *style;
407 GdkBitmap *mask;
408 GdkPixmap *gdk_pixmap;
409 GtkWidget *gtk_pixmap;
410 GtkWidget *Label;
411 GtkWidget *hbox;
412
413 hbox = gtk_hbox_new (FALSE, 0);
414 g_object_ref (hbox);
415 gtk_widget_show (hbox);
416
417 style = gtk_widget_get_style(widget);
418 g_assert(style != NULL);
419
420 gdk_pixmap = gdk_pixmap_create_from_xpm_d(widget->window,
421 &mask, &style->bg[GTK_STATE_NORMAL],data);
422 g_assert(gdk_pixmap != NULL);
423 gtk_pixmap = gtk_image_new_from_pixmap(gdk_pixmap, mask);
424
425 g_object_unref(gdk_pixmap);
426 g_object_unref(mask);
427
428 g_assert(gtk_pixmap != NULL);
429
430 Label = gtk_label_new(string);
431 gtk_label_set_justify(GTK_LABEL(Label),GTK_JUSTIFY_LEFT);
432 gtk_box_pack_end (GTK_BOX (hbox), gtk_pixmap, FALSE, FALSE, 2);
433 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 2);
434
435 return hbox;
436 }
437 /********************************************************************************/
create_pixmap_label(GtkWidget * widget,gchar ** data,gchar * string)438 GtkWidget *create_pixmap_label(GtkWidget *widget, gchar **data,gchar *string)
439 {
440 GtkStyle *style;
441 GdkBitmap *mask;
442 GdkPixmap *gdk_pixmap;
443 GtkWidget *gtk_pixmap;
444 GtkWidget *Label;
445 GtkWidget *hbox;
446
447 hbox = gtk_hbox_new (FALSE, 0);
448 g_object_ref (hbox);
449 gtk_widget_show (hbox);
450
451 style = gtk_widget_get_style(widget);
452 g_assert(style != NULL);
453
454 gdk_pixmap = gdk_pixmap_create_from_xpm_d(widget->window,
455 &mask, &style->bg[GTK_STATE_NORMAL],data);
456 g_assert(gdk_pixmap != NULL);
457 gtk_pixmap = gtk_image_new_from_pixmap(gdk_pixmap, mask);
458
459 g_object_unref(gdk_pixmap);
460 g_object_unref(mask);
461
462 g_assert(gtk_pixmap != NULL);
463
464 Label = gtk_label_new(string);
465 gtk_label_set_justify(GTK_LABEL(Label),GTK_JUSTIFY_LEFT);
466 gtk_box_pack_start (GTK_BOX (hbox), gtk_pixmap, FALSE, FALSE, 2);
467 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 2);
468
469 return hbox;
470 }
471 /********************************************************************************/
create_label_with_pixmap(GtkWidget * Win,gchar * string,gchar * type)472 GtkWidget *create_label_with_pixmap(GtkWidget *Win,gchar *string,gchar *type)
473 {
474 GtkWidget *hbox;
475 GtkWidget *Label;
476 if( strstr(type,_("Question")) )
477 hbox = create_pixmap_label(Win,question_xpm,string);
478 else
479 if( strstr(type,_("Warning")) )
480 hbox = create_pixmap_label(Win,warning_xpm,string);
481 else
482 if( strstr(type,_("Error")))
483 hbox = create_pixmap_label(Win,error_xpm,string);
484 else
485 if( strstr(type,_("Info")) )
486 hbox = create_pixmap_label(Win,info_xpm,string);
487 else
488 {
489 hbox = gtk_hbox_new (TRUE, 0);
490 gtk_widget_show (hbox);
491 Label = gtk_label_new(string);
492 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 1);
493 }
494
495 return hbox;
496 }
497 /********************************************************************************/
create_button_pixmap(GtkWidget * widget,gchar ** data,gchar * string)498 GtkWidget *create_button_pixmap(GtkWidget *widget, gchar **data,gchar *string)
499 {
500 GtkStyle *style;
501 GdkBitmap *mask;
502 GdkPixmap *gdk_pixmap;
503 GtkWidget *gtk_pixmap;
504 GtkWidget *Button;
505 GtkWidget *Label = NULL;
506 GtkWidget *hbox;
507
508 hbox = gtk_hbox_new (FALSE, 1);
509 g_object_ref (hbox);
510 gtk_widget_show (hbox);
511
512
513 style = gtk_widget_get_style(widget);
514 g_assert(style != NULL);
515
516 gdk_pixmap = gdk_pixmap_create_from_xpm_d (widget->window,&mask, &style->bg[GTK_STATE_NORMAL],data);
517 g_assert(gdk_pixmap != NULL);
518 gtk_pixmap = gtk_image_new_from_pixmap(gdk_pixmap, mask);
519
520 g_object_unref(gdk_pixmap);
521 g_object_unref(mask);
522
523 g_assert(gtk_pixmap != NULL);
524
525 Button = gtk_button_new();
526 gtk_container_add(GTK_CONTAINER(Button),hbox);
527 gtk_box_pack_start (GTK_BOX (hbox), gtk_pixmap, FALSE, FALSE, 2);
528
529 if(string)
530 {
531 Label = gtk_label_new(string);
532 gtk_box_pack_end (GTK_BOX (hbox), Label, FALSE, FALSE, 1);
533 }
534
535 return Button ;
536 }
537
538 /********************************************************************************/
exit_all(GtkWidget * widget,gchar * data)539 void exit_all(GtkWidget *widget, gchar *data)
540 {
541 if(imodif == DATA_MOD_NO )
542 ExitDlg(NULL, NULL);
543 else
544 Save_YesNo();
545 }
546 /********************************************************************************/
create_button(GtkWidget * Win,gchar * string)547 GtkWidget *create_button(GtkWidget *Win,gchar *string)
548 {
549 GtkWidget *button;
550 if( strstr(string,_("OK")) )
551 button = create_button_pixmap(Win,ok_xpm,_("OK"));
552 else
553 if(strstr(string,_("Cancel")) )
554 button = create_button_pixmap(Win,cancel_xpm,_("Cancel"));
555 else
556 if(strstr(string,_("Yes")) )
557 button = create_button_pixmap(Win,yes_xpm,_("Yes"));
558 else
559 if(strstr(string,_("No")) )
560 button = create_button_pixmap(Win,no_xpm,_("No"));
561 else
562 if(strstr(string,_("Save&Apply&Close")) )
563 button = create_button_pixmap(Win,savemini_xpm,_("Save&Apply&Close"));
564 else
565 if(strstr(string,_("Save&Close")) )
566 button = create_button_pixmap(Win,savemini_xpm,_("Save&Close"));
567 else
568 if(strstr(string,_("Apply&Close")) )
569 button = create_button_pixmap(Win,apply_xpm,_("Apply&Close"));
570 else
571 if(strstr(string,_("Save")) )
572 button = create_button_pixmap(Win,savemini_xpm,_("Save"));
573 else
574 if(strstr(string,_("Close")) )
575 button = create_button_pixmap(Win,close_xpm,_("Close"));
576 else
577 if(strstr(string,_("Apply")) )
578 button = create_button_pixmap(Win,apply_xpm,_("Apply"));
579 else
580 if(strstr(string," *a0 ") )
581 button = create_button_pixmap(Win,a0p_xpm,NULL);
582 else
583 if(strstr(string," /a0 ") )
584 button = create_button_pixmap(Win,a0d_xpm,NULL);
585 else
586 if(strstr(string,_("Print")) )
587 button = create_button_pixmap(Win,print_xpm,_("Print"));
588 else
589 if(strstr(string,_("Stop")) )
590 button = create_button_pixmap(Win,stop_xpm,_("Stop"));
591 else
592 if(strstr(string,_("Play")) )
593 button = create_button_pixmap(Win,play_xpm,_("Play"));
594 else
595 if(strstr(string,_("Next")) )
596 button = create_button_pixmap(Win,next_xpm,_("Next"));
597 else
598 button = gtk_button_new_with_label(string);
599
600 return button;
601 }
602 /********************************************************************************/
Message(char * message,char * titre,gboolean center)603 GtkWidget* Message(char *message,char *titre,gboolean center)
604 {
605 GtkWidget *DialogueMessage = NULL;
606 GtkWidget *Label, *Bouton;
607 GtkWidget *frame, *vboxframe;
608
609
610 DialogueMessage = gtk_dialog_new();
611 gtk_widget_realize(GTK_WIDGET(DialogueMessage));
612
613 gtk_window_set_title(GTK_WINDOW(DialogueMessage),titre);
614 gtk_window_set_transient_for(GTK_WINDOW(DialogueMessage),GTK_WINDOW(Fenetre));
615 gtk_window_set_position(GTK_WINDOW(DialogueMessage),GTK_WIN_POS_CENTER);
616
617 g_signal_connect(G_OBJECT(DialogueMessage), "delete_event", (GCallback)destroy_button_windows, NULL);
618 g_signal_connect(G_OBJECT(DialogueMessage), "delete_event", (GCallback)gtk_widget_destroy, NULL);
619 frame = gtk_frame_new (NULL);
620 gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
621
622 gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
623 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->vbox), frame,TRUE,TRUE,0);
624
625 gtk_widget_show (frame);
626
627 vboxframe = create_vbox(frame);
628
629 if(center)
630 {
631 Label = create_label_with_pixmap(Fenetre,message,titre);
632 gtk_box_pack_start(GTK_BOX(vboxframe), Label,TRUE,TRUE,0);
633 }
634 else
635 {
636 GtkWidget* hbox;
637 Label = gtk_label_new(message);
638 gtk_widget_show (Label);
639 gtk_label_set_justify(GTK_LABEL(Label),GTK_JUSTIFY_LEFT);
640 hbox = gtk_hbox_new (FALSE, 5);
641 gtk_box_pack_start (GTK_BOX (vboxframe), hbox, FALSE, FALSE, 5);
642 gtk_box_pack_start (GTK_BOX(hbox), Label, FALSE, FALSE, 5);
643 gtk_widget_show (hbox);
644 }
645
646 gtk_box_set_homogeneous (GTK_BOX( GTK_DIALOG(DialogueMessage)->action_area), FALSE);
647
648 Bouton = create_button(DialogueMessage,_("OK"));
649 gtk_box_pack_end (GTK_BOX( GTK_DIALOG(DialogueMessage)->action_area), Bouton, FALSE, TRUE, 5);
650 GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
651 gtk_widget_grab_default(Bouton);
652 g_signal_connect_swapped(G_OBJECT(Bouton), "clicked",
653 (GCallback)destroy_button_windows,
654 GTK_OBJECT(DialogueMessage));
655 g_signal_connect_swapped(G_OBJECT(Bouton), "clicked",
656 (GCallback)gtk_widget_destroy,
657 GTK_OBJECT(DialogueMessage));
658
659 add_button_windows(titre,DialogueMessage);
660 gtk_widget_show_all(DialogueMessage);
661 return DialogueMessage;
662 }
663 /********************************************************************************/
MessageTxt(gchar * message,gchar * title)664 GtkWidget* MessageTxt(gchar *message,gchar *title)
665 {
666 GtkWidget *dlgWin = NULL;
667 GtkWidget *frame;
668 GtkWidget *vboxframe;
669 GtkWidget *txtWid;
670 GtkWidget *button;
671
672
673 dlgWin = gtk_dialog_new();
674 gtk_widget_realize(GTK_WIDGET(dlgWin));
675
676 gtk_window_set_title(GTK_WINDOW(dlgWin),title);
677 gtk_window_set_transient_for(GTK_WINDOW(dlgWin),GTK_WINDOW(Fenetre));
678 gtk_window_set_position(GTK_WINDOW(dlgWin),GTK_WIN_POS_CENTER);
679
680 g_signal_connect(G_OBJECT(dlgWin), "delete_event", (GCallback)destroy_button_windows, NULL);
681 g_signal_connect(G_OBJECT(dlgWin), "delete_event", (GCallback)gtk_widget_destroy, NULL);
682 frame = gtk_frame_new (NULL);
683 gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
684
685 gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
686 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(dlgWin)->vbox), frame,TRUE,TRUE,0);
687
688 gtk_widget_show (frame);
689
690 vboxframe = create_vbox(frame);
691 txtWid = create_text_widget(vboxframe,NULL,&frame);
692 if(message) gabedit_text_insert (GABEDIT_TEXT(txtWid), NULL, NULL, NULL,message,-1);
693
694 gtk_box_set_homogeneous (GTK_BOX( GTK_DIALOG(dlgWin)->action_area), FALSE);
695
696 button = create_button(dlgWin,_("OK"));
697 gtk_box_pack_end (GTK_BOX( GTK_DIALOG(dlgWin)->action_area), button, FALSE, TRUE, 5);
698 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
699 gtk_widget_grab_default(button);
700 g_signal_connect_swapped(G_OBJECT(button), "clicked", (GCallback)destroy_button_windows, GTK_OBJECT(dlgWin));
701 g_signal_connect_swapped(G_OBJECT(button), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(dlgWin));
702
703 add_button_windows(title,dlgWin);
704 gtk_window_set_default_size (GTK_WINDOW(dlgWin), (gint)(ScreenHeight*0.4), (gint)(ScreenHeight*0.4));
705 gtk_widget_show_all(dlgWin);
706 return dlgWin;
707 }
708 /********************************************************************************/
select_all()709 void select_all()
710 {
711
712 if( gtk_notebook_get_current_page(GTK_NOTEBOOK(NoteBookText))==0)
713 gabedit_text_select_all(text);
714 else
715 gabedit_text_select_all(textresult);
716 }
717 /********************************************************************************/
goto_end(GtkWidget * current,gpointer data)718 void goto_end(GtkWidget *current,gpointer data)
719 {
720 gabedit_text_goto_end(current);
721 }
722 /********************************************************************************/
goto_end_result(GtkWidget * win,gpointer data)723 void goto_end_result(GtkWidget *win,gpointer data)
724 {
725 goto_end(textresult,data);
726 }
727 /********************************************************************************/
ClearText(GtkWidget * text)728 void ClearText(GtkWidget* text)
729 {
730 gint nchar;
731 nchar=gabedit_text_get_length(GABEDIT_TEXT(text));
732 gabedit_text_set_point(GABEDIT_TEXT(text),0);
733 gabedit_text_forward_delete(GABEDIT_TEXT(text),nchar);
734
735 gabedit_text_set_point(GABEDIT_TEXT(text),0);
736
737 }
738 /********************************************************************************/
destroy(GtkWidget * widget,gpointer data)739 void destroy( GtkWidget *widget, gpointer data )
740 {
741 guint i;
742 if(iframe==2)
743 geom_is_not_open();
744 gtk_widget_destroy(widget);
745 iedit=1;
746 gabedit_text_set_editable(GABEDIT_TEXT(text), TRUE);
747 if(iframe==2 && iprogram == PROG_IS_GAUSS)
748 for(i=0;i<6;i++)
749 EntryCS[i]=NULL;
750 iframe=1;
751 widget = NULL;
752 }
753 /********************************************************************************/
Cancel_YesNo(GtkWidget * widget,gpointer data,GabeditSignalFunc func)754 void Cancel_YesNo(GtkWidget *widget, gpointer data, GabeditSignalFunc func)
755 {
756 GtkWidget *DialogueMessage = NULL;
757 GtkWidget *Label, *Bouton;
758 GtkWidget *frame, *vboxframe;
759 DialogueMessage = gtk_dialog_new();
760 gtk_window_set_position(GTK_WINDOW(DialogueMessage),GTK_WIN_POS_CENTER);
761 gtk_window_set_title(GTK_WINDOW(DialogueMessage),_("Warning"));
762 gtk_window_set_modal (GTK_WINDOW (DialogueMessage), TRUE);
763
764 g_signal_connect(G_OBJECT(DialogueMessage),
765 "delete_event",
766 (GCallback)gtk_widget_destroy,
767 NULL);
768
769 frame = gtk_frame_new (NULL);
770 gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
771 g_object_ref (frame);
772 g_object_set_data_full (G_OBJECT (DialogueMessage), "frame",
773 frame,(GDestroyNotify) g_object_unref);
774 gtk_container_set_border_width (GTK_CONTAINER (frame), 10);
775 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->vbox), frame,TRUE,TRUE,0);
776 gtk_widget_show (frame);
777 vboxframe = create_vbox(frame);
778
779 Label = gtk_label_new(_("Are you sure to \ncancel this window ?"));
780 gtk_box_pack_start(GTK_BOX(vboxframe), Label,TRUE,TRUE,0);
781 gtk_label_set_justify(GTK_LABEL(Label),
782 GTK_JUSTIFY_CENTER);
783 gtk_misc_set_padding(GTK_MISC(Label), 10, 10);
784
785 gtk_widget_realize(DialogueMessage);
786
787 Bouton = create_button(DialogueMessage,_("No"));
788 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area), Bouton,TRUE,TRUE,0);
789 g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
790 GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
791 gtk_widget_grab_default(Bouton);
792
793 Bouton = create_button(DialogueMessage,_("Yes"));
794 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area), Bouton,TRUE,TRUE,0);
795 GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
796 g_signal_connect_swapped(G_OBJECT(Bouton),"clicked", (GCallback)func, GTK_OBJECT(widget));
797 g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
798
799
800 gtk_widget_show_all(DialogueMessage);
801 }
802 /**********************************************************************************/
get_geometry_type_from_molpro_input_file(gchar * NomFichier)803 FilePosTypeGeom get_geometry_type_from_molpro_input_file(gchar *NomFichier)
804 {
805 gchar *t;
806 FILE *fd;
807 guint taille=BSIZE;
808 FilePosTypeGeom j;
809 gint k;
810 gchar *t1;
811 gchar *t2;
812 gchar *t3 = NULL;
813
814
815 j.geomtyp=GEOM_IS_ZMAT;
816 j.numline=0;
817 j.units=0;
818 t=g_malloc(taille);
819 fd = FOpen(NomFichier, "rb");
820 if(fd!=NULL)
821 {
822 k= 0;
823 while(!feof(fd) )
824 {
825 if(!fgets(t, taille, fd))
826 break;
827 k++;
828 t1 = g_strdup(t);
829 t2= g_strdup("Geometry={");
830 uppercase(t1);
831 uppercase(t2);
832 t3 = NULL;
833 t3 = strstr(t1,t2);
834 if(t3 != NULL)
835 j.numline=k;
836 g_free(t2);
837 t3 = NULL;
838 t2= g_strdup("ANGSTROM");
839 t3 = strstr(t1,t2);
840 if(t3 != NULL)
841 j.units=1;
842 g_free(t2);
843 t2= g_strdup("geomtyp=xyz");
844 uppercase(t2);
845 t3 = NULL;
846 t3 = strstr(t1,t2);
847 if(t3 != NULL)
848 j.geomtyp=GEOM_IS_XYZ;
849 g_free(t2);
850 g_free(t1);
851 }
852 fclose(fd);
853 }
854 if(j.numline==0)
855 j.geomtyp=GEOM_IS_OTHER;
856 g_free(t);
857 return j;
858 }
859 /**********************************************************************************/
get_geometry_type_from_demon_input_file(gchar * NomFichier)860 FilePosTypeGeom get_geometry_type_from_demon_input_file(gchar *NomFichier)
861 {
862 gchar *t;
863 FILE *fd;
864 guint taille=BSIZE;
865 gboolean OK=TRUE;
866 gint i;
867 FilePosTypeGeom j;
868 gint k;
869 gchar *t1;
870 gchar *t2;
871 gchar *t3 = NULL;
872 gchar dum[100];
873
874
875 sprintf(dum,"NONE");
876 j.geomtyp=GEOM_IS_OTHER;
877 j.numline=0;
878 j.units=1;
879 t=g_malloc(taille);
880 fd = FOpen(NomFichier, "rb");
881 if(fd!=NULL)
882 {
883 /* Charge and Spin */
884 k = 0;
885 while(!feof(fd) )
886 {
887 if(!fgets(t, taille, fd)) break;
888 deleteFirstSpaces(t);
889 if((int)t[0]==(int)'#') continue;
890 uppercase(t);
891 sscanf(t,"%s", dum);
892 if(strstr(dum,"MULTIPLICIT"))
893 {
894 sscanf(t,"%s %d", dum, &SpinMultiplicities[0]);
895 SpinMultiplicities[1] = SpinMultiplicities[0];
896 SpinMultiplicities[2] = SpinMultiplicities[0];
897 k++;
898 }
899 if(strstr(dum,"CHARGE"))
900 {
901 sscanf(t,"%s %d", dum, &SpinMultiplicities[0]);
902 SpinMultiplicities[1] = SpinMultiplicities[0];
903 SpinMultiplicities[2] = SpinMultiplicities[0];
904 k++;
905 }
906 if(k==2) break;
907 }
908 fseek(fd, 0L, SEEK_SET);
909 /* Geometry, Type and unit */
910 while(!feof(fd) )
911 {
912 if(!fgets(t, taille, fd)) break;
913 j.numline++;
914 deleteFirstSpaces(t);
915 if((int)t[0]==(int)'#' ) continue;
916 uppercase(t);
917 sscanf(t,"%s", dum);
918 if(strstr(dum,"GEOMETRY"))
919 {
920 if(strstr(t,"CARTES")) j.geomtyp = GEOM_IS_XYZ;
921 else j.geomtyp = GEOM_IS_ZMAT;
922 if(strstr(t,"BOHR")) j.units = 0;
923 j.numline++;
924 break;
925 }
926 }
927 }
928 fclose(fd);
929 g_free(t);
930 return j;
931 }
932 /**********************************************************************************/
get_geometry_type_from_gauss_input_file(gchar * NomFichier)933 FilePosTypeGeom get_geometry_type_from_gauss_input_file(gchar *NomFichier)
934 {
935 gchar *t;
936 FILE *fd;
937 guint taille=BSIZE;
938 gboolean OK=TRUE;
939 gint i;
940 FilePosTypeGeom j;
941 gint k;
942 gchar *t1;
943 gchar *t2;
944 gchar *t3 = NULL;
945
946
947 j.geomtyp=GEOM_IS_OTHER;
948 j.numline=0;
949 j.units=1;
950 t=g_malloc(taille);
951 fd = FOpen(NomFichier, "rb");
952 if(fd!=NULL)
953 {
954 /* Commands lines */
955 while(!feof(fd) )
956 {
957 if(!fgets(t, taille, fd))
958 break;
959 j.numline++;
960 if((int)t[0]==(int)'#' || (int)t[0]==(int)'%' )
961 {
962 t1 = g_strdup(t);
963 t2= g_strdup("Units(Au");
964 uppercase(t1);
965 uppercase(t2);
966 t3 = strstr(t1,t2);
967 if(t3 != NULL)
968 j.units=0;
969 g_free(t1);
970 g_free(t2);
971 continue;
972 }
973 else
974 break;
975 }
976 /* Title */
977 while(!feof(fd) )
978 {
979 if(!fgets(t, taille, fd))
980 break;
981 j.numline++;
982 OK=TRUE;
983 for(i=0;i<(gint)strlen(t);i++)
984 if(t[i]!=' ' && t[i] !='\n' )
985 {
986 OK=FALSE;
987 break;
988 }
989 if(OK)
990 break;
991 }
992
993 /* Charge and Spin */
994 if(!feof(fd) )
995 {
996 if(fgets(t, taille, fd)) j.numline++;
997 sscanf(t,"%d %d %d %d %d %d",
998 &TotalCharges[0],
999 &SpinMultiplicities[0],
1000 &TotalCharges[1],
1001 &SpinMultiplicities[1],
1002 &TotalCharges[2],
1003 &SpinMultiplicities[2]);
1004 }
1005 /* First line of geometry */
1006 if(!feof(fd) )
1007 {
1008 if(!fgets(t, taille, fd))
1009 {
1010 j.geomtyp = GEOM_IS_OTHER;
1011 }
1012 else
1013 {
1014 gchar dump[5][BSIZE];
1015 j.numline++;
1016
1017 k = sscanf(t,"%s %s %s %s %s",dump[0],dump[1],dump[2],dump[3],dump[4]);
1018 if(k==5)
1019 j.geomtyp = GEOM_IS_XYZ;
1020 else
1021 if(k==4)
1022 j.geomtyp = GEOM_IS_XYZ;
1023 else
1024 if(k==1)
1025 j.geomtyp = GEOM_IS_ZMAT;
1026 else
1027 j.geomtyp = GEOM_IS_OTHER;
1028 /*
1029 k=0;
1030 for(i=strlen(t)-1;i>0;i--)
1031 if(t[i]!=' ' || t[i] !='\n' )
1032 {
1033 k=i;
1034 break;
1035 }
1036 if(k>2)
1037 j.geomtyp = GEOM_IS_XYZ;
1038 else
1039 if(k>0 && k<=2)
1040 j.geomtyp = GEOM_IS_ZMAT;
1041 else j.geomtyp = GEOM_IS_OTHER;
1042 */
1043 }
1044 }
1045 }
1046 fclose(fd);
1047 g_free(t);
1048 return j;
1049 }
1050 /**********************************************************************************/
get_geometry_type_from_nwchem_input_file(gchar * NomFichier)1051 FilePosTypeGeom get_geometry_type_from_nwchem_input_file(gchar *NomFichier)
1052 {
1053 gchar *t;
1054 FILE *fd;
1055 guint taille=BSIZE;
1056 FilePosTypeGeom j;
1057
1058
1059 j.geomtyp=GEOM_IS_OTHER;
1060 j.numline=0;
1061 j.units=1;
1062 t=g_malloc(taille);
1063 fd = FOpen(NomFichier, "rb");
1064 if(fd==NULL) return j;
1065 while(!feof(fd) )
1066 {
1067 if(!fgets(t, taille, fd)) break;
1068 uppercase(t);
1069 if(strstr(t,"GEOMETRY"))
1070 {
1071 j.geomtyp = GEOM_IS_XYZ;
1072 if(!fgets(t, taille, fd)) break;
1073 uppercase(t);
1074 if(strstr(t,"ZMATRIX")) j.geomtyp = GEOM_IS_ZMAT;
1075 break;
1076 }
1077 j.numline++;
1078 }
1079 fclose(fd);
1080 g_free(t);
1081 return j;
1082 }
1083 /**********************************************************************************/
get_geometry_type_from_psicode_input_file(gchar * NomFichier)1084 FilePosTypeGeom get_geometry_type_from_psicode_input_file(gchar *NomFichier)
1085 {
1086 gchar *t;
1087 FILE *fd;
1088 guint taille=BSIZE;
1089 FilePosTypeGeom j;
1090
1091
1092 j.geomtyp=GEOM_IS_OTHER;
1093 j.numline=0;
1094 j.units=1;
1095 /* printf("NomFichier=%s\n",NomFichier);*/
1096 t = g_malloc(taille*sizeof(gchar));
1097 fd = FOpen(NomFichier, "rb");
1098 if(fd==NULL) return j;
1099 while(!feof(fd) )
1100 {
1101 if(!fgets(t, taille, fd)) break;
1102 uppercase(t);
1103 /* printf("t=%s\n",t);*/
1104 if(strstr(t,"MOLECULE"))
1105 {
1106 gint charge,mult;
1107 gboolean OK = FALSE;
1108 gint i;
1109 if(fgets(t,taille,fd) && 2==sscanf(t,"%d %d",&charge,&mult)) OK = TRUE;
1110 else OK = FALSE;
1111 /* printf("t=%s\n",t);*/
1112 if(OK && fgets(t,taille,fd))
1113 {
1114 gchar*t1 = g_malloc(taille*sizeof(gchar));
1115 gchar*t2 = g_malloc(taille*sizeof(gchar));
1116 gchar*t3 = g_malloc(taille*sizeof(gchar));
1117 gchar*t4 = g_malloc(taille*sizeof(gchar));
1118 /* printf("t=%s\n",t);*/
1119 i = sscanf(t,"%s %s %s %s",t1,t2,t3,t4);
1120 if(i==4)j.geomtyp = GEOM_IS_XYZ;
1121 else j.geomtyp = GEOM_IS_ZMAT;
1122 g_free(t1);
1123 g_free(t2);
1124 g_free(t3);
1125 g_free(t4);
1126 }
1127 break;
1128 }
1129 j.numline++;
1130 }
1131 fclose(fd);
1132 g_free(t);
1133 return j;
1134 }
1135 /**********************************************************************************/
get_geometry_type_from_orca_input_file(gchar * NomFichier)1136 FilePosTypeGeom get_geometry_type_from_orca_input_file(gchar *NomFichier)
1137 {
1138 gchar *t;
1139 FILE *fd;
1140 guint taille=BSIZE;
1141 FilePosTypeGeom j;
1142
1143
1144 j.geomtyp=GEOM_IS_OTHER;
1145 j.numline=0;
1146 j.units=1;
1147 t=g_malloc(taille);
1148 fd = FOpen(NomFichier, "rb");
1149 if(fd==NULL) return j;
1150 while(!feof(fd) )
1151 {
1152 if(!fgets(t, taille, fd)) break;
1153 uppercase(t);
1154 if(strstr(t,"* XYZ"))
1155 {
1156 j.geomtyp = GEOM_IS_XYZ;
1157 break;
1158 }
1159 if(strstr(t,"* INT"))
1160 {
1161 j.geomtyp = GEOM_IS_ZMAT;
1162 break;
1163 }
1164 j.numline++;
1165 }
1166 fclose(fd);
1167 g_free(t);
1168 return j;
1169 }
1170 /**********************************************************************************/
get_geometry_type_from_qchem_input_file(gchar * NomFichier)1171 FilePosTypeGeom get_geometry_type_from_qchem_input_file(gchar *NomFichier)
1172 {
1173 gchar *t;
1174 FILE *fd;
1175 guint taille=BSIZE;
1176 FilePosTypeGeom j;
1177 gint k;
1178
1179
1180 j.geomtyp=GEOM_IS_OTHER;
1181 j.numline=0;
1182 j.units=1;
1183 t=g_malloc(taille);
1184 fd = FOpen(NomFichier, "rb");
1185 if(fd!=NULL)
1186 {
1187 while(!feof(fd) )
1188 {
1189 if(!fgets(t, taille, fd)) break;
1190 if(strstr(t,"$molecule")) break;
1191 j.numline++;
1192 }
1193 /* Charge and Spin */
1194 if(!feof(fd) )
1195 {
1196 if(fgets(t, taille, fd))
1197 j.numline++;
1198 }
1199 /* First line of geometry */
1200 if(!feof(fd) )
1201 {
1202 if(!fgets(t, taille, fd))
1203 {
1204 j.geomtyp = GEOM_IS_OTHER;
1205 }
1206 else
1207 {
1208 gchar dump[5][BSIZE];
1209 j.numline++;
1210
1211 k = sscanf(t,"%s %s %s %s %s",dump[0],dump[1],dump[2],dump[3],dump[4]);
1212 if(k==5)
1213 j.geomtyp = GEOM_IS_XYZ;
1214 else
1215 if(k==4)
1216 j.geomtyp = GEOM_IS_XYZ;
1217 else
1218 if(k==1)
1219 j.geomtyp = GEOM_IS_ZMAT;
1220 else
1221 j.geomtyp = GEOM_IS_OTHER;
1222 }
1223 }
1224 }
1225 fclose(fd);
1226 g_free(t);
1227 return j;
1228 }
1229 /**********************************************************************************/
get_geometry_type_from_mopac_input_file(gchar * NomFichier)1230 FilePosTypeGeom get_geometry_type_from_mopac_input_file(gchar *NomFichier)
1231 {
1232 gchar *t;
1233 FILE *fd;
1234 guint taille=BSIZE;
1235 FilePosTypeGeom j;
1236 gint k;
1237
1238
1239 j.geomtyp=GEOM_IS_OTHER;
1240 j.numline=0;
1241 j.units=1;
1242 t=g_malloc(taille);
1243 fd = FOpen(NomFichier, "rb");
1244 if(fd!=NULL)
1245 {
1246 while(!feof(fd) )
1247 {
1248 if(!fgets(t, taille, fd))break;
1249 j.numline++;
1250 if(t[0] !='*') break;
1251 }
1252 if(!feof(fd)) { char* e = fgets(t,taille,fd);}
1253 j.numline++;
1254 if(!feof(fd)) { char* e = fgets(t,taille,fd);}
1255 j.numline++;
1256 /* First line of geometry */
1257 if(!feof(fd) )
1258 {
1259 if(!fgets(t, taille, fd))
1260 {
1261 j.geomtyp = GEOM_IS_OTHER;
1262 }
1263 else
1264 {
1265 gchar dump[8][BSIZE];
1266 j.numline++;
1267
1268 k = sscanf(t,"%s %s %s %s %s %s %s %s",dump[0],dump[1],dump[2],dump[3],dump[4], dump[5], dump[6], dump[7]);
1269 if(k==8)
1270 j.geomtyp = GEOM_IS_ZMAT;
1271 else
1272 if(k==7)
1273 j.geomtyp = GEOM_IS_XYZ;
1274 else
1275 j.geomtyp = GEOM_IS_OTHER;
1276 }
1277 }
1278 }
1279 fclose(fd);
1280 g_free(t);
1281 return j;
1282 }
1283 /**********************************************************************************/
read_geom_in_gamess_input(gchar * fileName)1284 void read_geom_in_gamess_input(gchar *fileName)
1285 {
1286 gchar* logfile;
1287 gchar* t;
1288 FILE* file;
1289 t = get_suffix_name_file(fileName);
1290 logfile = g_strdup_printf("%s.log",t);
1291 file = FOpen(logfile, "rb");
1292 if(!file)
1293 {
1294 if(logfile) g_free(logfile);
1295 logfile = g_strdup_printf("%s.out",t);
1296 file = FOpen(logfile, "rb");
1297 if(!file) return;
1298 }
1299 fclose(file);
1300 read_geom_from_gamess_output_file(logfile,1);
1301 }
1302 /**********************************************************************************/
read_geom_in_firefly_input(gchar * fileName)1303 void read_geom_in_firefly_input(gchar *fileName)
1304 {
1305 gchar* logfile;
1306 gchar* t;
1307 FILE* file;
1308 t = get_suffix_name_file(fileName);
1309 logfile = g_strdup_printf("%s.log",t);
1310 file = FOpen(logfile, "rb");
1311 if(!file)
1312 {
1313 if(logfile) g_free(logfile);
1314 logfile = g_strdup_printf("%s.out",t);
1315 file = FOpen(logfile, "rb");
1316 if(!file) return;
1317 }
1318 fclose(file);
1319 read_geom_from_gamess_output_file(logfile,1);
1320 }
1321 /**********************************************************************************/
read_geom_in_mpqc_input(gchar * fileName)1322 void read_geom_in_mpqc_input(gchar *fileName)
1323 {
1324 read_XYZ_from_mpqc_input_file(fileName);
1325 }
1326 /**********************************************************************************/
read_geom_in_demon_input(gchar * NameFile)1327 void read_geom_in_demon_input(gchar *NameFile)
1328 {
1329 FilePosTypeGeom j;
1330 j= get_geometry_type_from_demon_input_file(NameFile);
1331 if( j.geomtyp == GEOM_IS_XYZ)
1332 read_XYZ_from_demon_input_file(NameFile,j);
1333 else
1334 if( j.geomtyp == GEOM_IS_ZMAT)
1335 read_Zmat_from_demon_input_file(NameFile,j);
1336 else
1337 Message(_("Sorry\nI can not read gemetry in DeMon input file\n"),_("Warning"),TRUE);
1338 }
1339
1340 /**********************************************************************************/
read_geom_in_gauss_input(gchar * NameFile)1341 void read_geom_in_gauss_input(gchar *NameFile)
1342 {
1343 FilePosTypeGeom j;
1344 j= get_geometry_type_from_gauss_input_file(NameFile);
1345 if( j.geomtyp == GEOM_IS_XYZ)
1346 read_XYZ_from_gauss_input_file(NameFile,j);
1347 else
1348 if( j.geomtyp == GEOM_IS_ZMAT)
1349 read_Zmat_from_gauss_input_file(NameFile,j);
1350 else
1351 Message(_("Sorry\nI can not read gemetry in gaussian input file\n"),_("Warning"),TRUE);
1352 }
1353 /**********************************************************************************/
read_geom_in_molcas_input(gchar * NameFile)1354 void read_geom_in_molcas_input(gchar *NameFile)
1355 {
1356 setMolcasGeometryFromInputFile(NameFile);
1357 }
1358 /**********************************************************************************/
read_geom_in_molpro_input(gchar * NameFile)1359 void read_geom_in_molpro_input(gchar *NameFile)
1360 {
1361 FilePosTypeGeom j;
1362 j= get_geometry_type_from_molpro_input_file(NameFile);
1363
1364 if( j.geomtyp == GEOM_IS_XYZ)
1365 read_XYZ_from_molpro_input_file(NameFile,j);
1366 else
1367 if( j.geomtyp == GEOM_IS_ZMAT)
1368 read_Zmat_from_molpro_input_file(NameFile,j);
1369 else
1370 Message(_("Sorry\nI can not read gemetry in molpro input file\n"),_("Warning"),TRUE);
1371 }
1372 /**********************************************************************************/
read_geom_in_nwchem_input(gchar * NameFile)1373 void read_geom_in_nwchem_input(gchar *NameFile)
1374 {
1375 FilePosTypeGeom j;
1376 j= get_geometry_type_from_nwchem_input_file(NameFile);
1377 if( j.geomtyp == GEOM_IS_XYZ)
1378 read_XYZ_from_nwchem_input_file(NameFile);
1379 else
1380 if( j.geomtyp == GEOM_IS_ZMAT)
1381 read_Zmat_from_nwchem_input_file(NameFile);
1382 else
1383 Message(_("Sorry\nI can not read gemetry in NWChem input file\n"),_("Warning"),TRUE);
1384 }
1385 /**********************************************************************************/
read_geom_in_psicode_input(gchar * NameFile)1386 void read_geom_in_psicode_input(gchar *NameFile)
1387 {
1388 FilePosTypeGeom j;
1389 j= get_geometry_type_from_psicode_input_file(NameFile);
1390 if( j.geomtyp == GEOM_IS_XYZ)
1391 read_XYZ_from_psicode_input_file(NameFile);
1392 else
1393 if( j.geomtyp == GEOM_IS_ZMAT)
1394 read_Zmat_from_psicode_input_file(NameFile);
1395 else
1396 Message(_("Sorry\nI can not read gemetry in Psicode input file\n"),_("Warning"),TRUE);
1397 }
1398 /**********************************************************************************/
read_geom_in_orca_input(gchar * NameFile)1399 void read_geom_in_orca_input(gchar *NameFile)
1400 {
1401 FilePosTypeGeom j;
1402 j= get_geometry_type_from_orca_input_file(NameFile);
1403 if( j.geomtyp == GEOM_IS_XYZ)
1404 read_XYZ_from_orca_input_file(NameFile);
1405 else
1406 if( j.geomtyp == GEOM_IS_ZMAT)
1407 read_Zmat_from_orca_input_file(NameFile);
1408 else
1409 Message(_("Sorry\nI can not read gemetry in Orca input file\n"),_("Warning"),TRUE);
1410 }
1411 /**********************************************************************************/
read_geom_in_qchem_input(gchar * NameFile)1412 void read_geom_in_qchem_input(gchar *NameFile)
1413 {
1414 FilePosTypeGeom j;
1415 j= get_geometry_type_from_qchem_input_file(NameFile);
1416 if( j.geomtyp == GEOM_IS_XYZ)
1417 read_XYZ_from_qchem_input_file(NameFile);
1418 else
1419 if( j.geomtyp == GEOM_IS_ZMAT)
1420 read_Zmat_from_qchem_input_file(NameFile);
1421 else
1422 Message(_("Sorry\nI can not read gemetry in Q-Chem input file\n"),_("Warning"),TRUE);
1423 }
1424 /**********************************************************************************/
read_geom_in_mopac_input(gchar * NameFile)1425 void read_geom_in_mopac_input(gchar *NameFile)
1426 {
1427 FilePosTypeGeom j;
1428 j= get_geometry_type_from_mopac_input_file(NameFile);
1429 if( j.geomtyp == GEOM_IS_XYZ)
1430 read_XYZ_from_mopac_input_file(NameFile);
1431 else
1432 if( j.geomtyp == GEOM_IS_ZMAT)
1433 read_Zmat_from_mopac_input_file(NameFile);
1434 else
1435 Message(_("Sorry\nI can not read gemetry in Mopac input file\n"),_("Warning"),TRUE);
1436 }
1437 /**********************************************************************************/
get_doc(gchar * NomFichier)1438 void get_doc(gchar *NomFichier)
1439 {
1440 gchar *t;
1441 FILE *fd;
1442 guint nchar;
1443 guint taille=BSIZE;
1444
1445 if ((!NomFichier) || (strcmp(NomFichier,"") == 0)) return ;
1446
1447 t=g_malloc(taille*sizeof(gchar));
1448 fd = FOpen(NomFichier, "rb");
1449 if(fd==NULL)
1450 {
1451 //fprintf(stderr,"Sorry, I can not open\n %s\n file",NomFichier);
1452 g_free(t);
1453 t = g_strdup_printf(_("Sorry, I can not open\n %s\n file"),NomFichier);
1454 Message(t,_("Error"),TRUE);
1455 g_free(t);
1456 return;
1457 }
1458
1459 iprogram = get_type_of_program(fd);
1460 //fprintf(stderr,"iprog=%d",iprogram);
1461
1462 nchar=gabedit_text_get_length(GABEDIT_TEXT(text));
1463 gabedit_text_set_point(GABEDIT_TEXT(text),0);
1464 gabedit_text_forward_delete(GABEDIT_TEXT(text),nchar);
1465
1466 while(1)
1467 {
1468 nchar = fread(t, 1, taille, fd);
1469 gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL, t,nchar);
1470 if(nchar<taille) break;
1471 }
1472 fclose(fd);
1473
1474 g_free(t);
1475 gabedit_text_set_point(GABEDIT_TEXT(text),0);
1476
1477 fileopen.remotehost = NULL;
1478 fileopen.remoteuser = NULL;
1479 fileopen.remotepass = NULL;
1480 fileopen.remotedir = NULL;
1481 fileopen.command = NULL;
1482 fileopen.netWorkProtocol = defaultNetWorkProtocol;
1483
1484 if(iprogram == PROG_IS_MPQC) fileopen.command=g_strdup(NameCommandMPQC);
1485 else if(iprogram == PROG_IS_DEMON) fileopen.command=g_strdup(NameCommandDeMon);
1486 else if(iprogram == PROG_IS_GAMESS) fileopen.command=g_strdup(NameCommandGamess);
1487 else if(iprogram == PROG_IS_FIREFLY) fileopen.command=g_strdup(NameCommandFireFly);
1488 else if(iprogram == PROG_IS_GAUSS) fileopen.command=g_strdup(NameCommandGaussian);
1489 else if(iprogram == PROG_IS_MOLCAS) fileopen.command=g_strdup(NameCommandMolcas);
1490 else if(iprogram == PROG_IS_MOLPRO) fileopen.command=g_strdup(NameCommandMolpro);
1491 else if(iprogram == PROG_IS_QCHEM) fileopen.command=g_strdup(NameCommandQChem);
1492 else if(iprogram == PROG_IS_ORCA) fileopen.command=g_strdup(NameCommandOrca);
1493 else if(iprogram == PROG_IS_MOPAC) fileopen.command=g_strdup(NameCommandMopac);
1494 else fileopen.command=NULL;
1495
1496 if(iprogram> PROG_IS_OTHER )
1497 {
1498 fileopen.datafile = get_name_file(NomFichier);
1499 t = get_suffix_name_file(NomFichier);
1500 fileopen.projectname = get_name_file(t);
1501 fileopen.localdir = get_name_dir(t);
1502 g_free(t);
1503 CreeFeuille(treeViewProjects, noeud[iprogram],fileopen.projectname,fileopen.datafile ,fileopen.localdir,
1504 fileopen.remotehost,fileopen.remoteuser,fileopen.remotepass,fileopen.remotedir,iprogram, fileopen.command, fileopen.netWorkProtocol);
1505 }
1506 else
1507 {
1508 fileopen.projectname = get_name_file(NomFichier);
1509 fileopen.localdir = get_name_dir(NomFichier);
1510 CreeFeuille(treeViewProjects, noeud[NBNOD-1],fileopen.projectname,fileopen.projectname,fileopen.localdir,
1511 fileopen.remotehost,fileopen.remoteuser,fileopen.remotepass,fileopen.remotedir,NBNOD-1, fileopen.command, fileopen.netWorkProtocol);
1512 }
1513
1514 if(iprogram == PROG_IS_GAMESS)
1515 {
1516 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1517 fileopen.outputfile=g_strdup_printf("%s.log",fileopen.projectname);
1518 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
1519 /* fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);*/
1520 fileopen.moldenfile=g_strdup_printf("%s.log",fileopen.projectname);
1521 }
1522 else
1523 if(iprogram == PROG_IS_FIREFLY)
1524 {
1525 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1526 fileopen.outputfile=g_strdup_printf("%s.log",fileopen.projectname);
1527 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
1528 /* fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);*/
1529 fileopen.moldenfile=g_strdup_printf("%s.log",fileopen.projectname);
1530 }
1531 else
1532 if(iprogram == PROG_IS_DEMON)
1533 {
1534 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1535 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1536 fileopen.logfile=g_strdup_printf("%s.out",fileopen.projectname);
1537 fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);
1538 }
1539 else
1540 if(iprogram == PROG_IS_MPQC)
1541 {
1542 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1543 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1544 fileopen.logfile=g_strdup_printf("%s.out",fileopen.projectname);
1545 fileopen.moldenfile=g_strdup_printf("'%s.molden'", fileopen.projectname);
1546 }
1547 else
1548 if(iprogram == PROG_IS_MOLCAS)
1549 {
1550 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1551 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1552 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
1553 /* fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);*/
1554 fileopen.moldenfile=g_strdup_printf("'%s.*.molden'", fileopen.projectname);
1555 }
1556 else
1557 if(iprogram == PROG_IS_MOLPRO)
1558 {
1559 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1560 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1561 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
1562 fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);
1563 }
1564 else if(iprogram == PROG_IS_GAUSS)
1565 {
1566 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1567 fileopen.outputfile=g_strdup_printf("%s.log",fileopen.projectname);
1568 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
1569 fileopen.moldenfile=g_strdup_printf("%s.log",fileopen.projectname);
1570 }
1571 else if(iprogram == PROG_IS_ORCA)
1572 {
1573 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1574 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1575 fileopen.logfile=g_strdup_printf("%s.out",fileopen.projectname);
1576 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
1577 }
1578 else if(iprogram == PROG_IS_NWCHEM)
1579 {
1580 fileopen.datafile = g_strdup_printf("%s.nw",fileopen.projectname);
1581 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1582 fileopen.logfile=g_strdup_printf("%s.out",fileopen.projectname);
1583 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
1584 }
1585 else if(iprogram == PROG_IS_QCHEM)
1586 {
1587 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1588 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1589 fileopen.logfile=g_strdup_printf("%s.out",fileopen.projectname);
1590 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
1591 }
1592 else if(iprogram == PROG_IS_MOPAC)
1593 {
1594 fileopen.datafile = g_strdup_printf("%s.mop",fileopen.projectname);
1595 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
1596 fileopen.logfile=g_strdup_printf("%s.aux",fileopen.projectname);
1597 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
1598 }
1599 else
1600 {
1601 fileopen.datafile = g_strdup_printf("%s",fileopen.projectname);
1602 fileopen.outputfile=g_strdup_printf("%s","Unknown");
1603 fileopen.logfile = g_strdup_printf("%s","Unknown");
1604 }
1605
1606 if( iprogram == PROG_IS_GAUSS) read_geom_in_gauss_input(NomFichier);
1607 else if( iprogram == PROG_IS_DEMON) read_geom_in_demon_input(NomFichier);
1608 else if( iprogram == PROG_IS_GAMESS) read_geom_in_gamess_input(NomFichier);
1609 else if( iprogram == PROG_IS_FIREFLY) read_geom_in_firefly_input(NomFichier);
1610 else if( iprogram == PROG_IS_MOLPRO) read_geom_in_molpro_input(NomFichier);
1611 else if( iprogram == PROG_IS_MPQC) read_geom_in_mpqc_input(NomFichier);
1612 else if( iprogram == PROG_IS_ORCA) read_geom_in_orca_input(NomFichier);
1613 else if( iprogram == PROG_IS_NWCHEM) read_geom_in_nwchem_input(NomFichier);
1614 else if( iprogram == PROG_IS_PSICODE) read_geom_in_psicode_input(NomFichier);
1615 else if( iprogram == PROG_IS_QCHEM) read_geom_in_qchem_input(NomFichier);
1616 else if( iprogram == PROG_IS_MOPAC) read_geom_in_mopac_input(NomFichier);
1617 else if(iprogram == PROG_IS_MOLCAS)
1618 {
1619 setMolcasVariablesFromInputFile(NomFichier);
1620 read_geom_in_molcas_input(NomFichier);
1621 }
1622
1623 data_modify(FALSE);
1624
1625 if(GeomConvIsOpen) find_energy_all(NULL,NULL);
1626
1627 }
1628 /********************************************************************************/
show_doc(GabeditFileChooser * SelecteurFichier,gint response_id)1629 void show_doc(GabeditFileChooser *SelecteurFichier, gint response_id)
1630 {
1631
1632 char *NomFichier;
1633 if(response_id != GTK_RESPONSE_OK) return;
1634 NomFichier = gabedit_file_chooser_get_current_file(SelecteurFichier);
1635 get_doc(NomFichier);
1636 }
1637 /********************************************************************************/
insert_doc(GabeditFileChooser * SelecteurFichier,gint response_id)1638 void insert_doc(GabeditFileChooser *SelecteurFichier, gint response_id)
1639 {
1640 char *t;
1641 char *NomFichier;
1642 guint nchar;
1643 FILE *fd;
1644 guint taille=BSIZE;
1645 if(response_id != GTK_RESPONSE_OK) return;
1646 NomFichier = gabedit_file_chooser_get_current_file(SelecteurFichier);
1647 if ((!NomFichier) || (strcmp(NomFichier,"") == 0))
1648 return ;
1649
1650
1651 t=g_malloc(taille);
1652 fd = FOpen(NomFichier, "rb");
1653 if(fd!=NULL)
1654 {
1655 while(1)
1656 {
1657 nchar = fread(t, 1, taille, fd);
1658 gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL, t,nchar);
1659 if(nchar<taille) break;
1660 }
1661 fclose(fd);
1662 }
1663 g_free(t);
1664 gabedit_text_set_point(GABEDIT_TEXT(text),0);
1665 set_last_directory(NomFichier);
1666 }
1667 /********************************************************************************/
charge_doc(GtkWidget * wid,gpointer data)1668 void charge_doc(GtkWidget* wid, gpointer data)
1669 {
1670 gtk_notebook_set_current_page((GtkNotebook*)NoteBookText,0);
1671 choose_file_to_open();
1672 }
1673 /********************************************************************************/
inserrer_doc(void)1674 void inserrer_doc(void)
1675 {
1676 gtk_notebook_set_current_page((GtkNotebook*)NoteBookText,0);
1677 choose_file_to_insert();
1678 /*data_modify(TRUE);*/
1679 }
1680 /********************************************************************************/
enreg_doc(gchar * NomFichier)1681 static gboolean enreg_doc(gchar *NomFichier)
1682 {
1683 gchar *temp;
1684 FILE *fd;
1685 gint i;
1686
1687 fd = FOpen(NomFichier, "wb");
1688 if(fd == NULL)
1689 {
1690 Message(_("Sorry, I can not save file"),_("Error"),TRUE);
1691 return FALSE;
1692 }
1693 temp=gabedit_text_get_chars(text,0,-1);
1694 for(i=0;i<strlen(temp);i++)
1695 if(temp[i]=='\r') temp[i] = ' ';
1696 fprintf(fd,"%s",temp);
1697 fclose(fd);
1698 g_free(temp);
1699 set_last_directory(NomFichier);
1700 return TRUE;
1701 }
1702 /********************************************************************************/
enreg_selec_doc(GabeditFileChooser * SelecteurFichier,gint response_id)1703 void enreg_selec_doc(GabeditFileChooser *SelecteurFichier , gint response_id)
1704 {
1705 gchar *temp;
1706 gchar *NomFichier;
1707
1708 if(response_id != GTK_RESPONSE_OK) return;
1709 NomFichier = gabedit_file_chooser_get_current_file(SelecteurFichier);
1710
1711 if ((!NomFichier) || (strcmp(NomFichier,"") == 0)) return ;
1712
1713 if(iprogram == PROG_IS_MPQC) fileopen.command=g_strdup(NameCommandMPQC);
1714 else if(iprogram == PROG_IS_DEMON) fileopen.command=g_strdup(NameCommandDeMon);
1715 else if(iprogram == PROG_IS_GAMESS) fileopen.command=g_strdup(NameCommandGamess);
1716 else if(iprogram == PROG_IS_FIREFLY) fileopen.command=g_strdup(NameCommandFireFly);
1717 else if(iprogram == PROG_IS_GAUSS) fileopen.command=g_strdup(NameCommandGaussian);
1718 else if(iprogram == PROG_IS_MOLCAS) fileopen.command=g_strdup(NameCommandMolcas);
1719 else if(iprogram == PROG_IS_MOLPRO) fileopen.command=g_strdup(NameCommandMolpro);
1720 else fileopen.command=NULL;
1721
1722 if(iprogram>PROG_IS_OTHER)
1723 {
1724 temp = get_suffix_name_file(NomFichier);
1725 fileopen.projectname = get_name_file(temp);
1726 fileopen.localdir = get_name_dir(temp);
1727 g_free(temp);
1728 if(iprogram==PROG_IS_GAMESS)
1729 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1730 else
1731 if(iprogram==PROG_IS_FIREFLY)
1732 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1733 else
1734 if(iprogram==PROG_IS_DEMON)
1735 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1736 else
1737 if(iprogram==PROG_IS_QCHEM)
1738 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1739 else
1740 if(iprogram==PROG_IS_MOPAC)
1741 fileopen.datafile = g_strdup_printf("%s.mop",fileopen.projectname);
1742 else
1743 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1744 if(NomFichier) g_free(NomFichier);
1745 NomFichier = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.datafile);
1746
1747 fileopen.remotehost = NULL;
1748 fileopen.remoteuser = NULL;
1749 fileopen.remotepass = NULL;
1750 fileopen.remotedir = NULL;
1751 fileopen.netWorkProtocol = defaultNetWorkProtocol;
1752
1753 CreeFeuille(treeViewProjects, noeud[iprogram],fileopen.projectname,fileopen.datafile,fileopen.localdir,
1754 fileopen.remotehost,fileopen.remoteuser,fileopen.remotepass,fileopen.remotedir,iprogram, fileopen.command, fileopen.netWorkProtocol);
1755 }
1756 else
1757 {
1758 temp = NomFichier;
1759 fileopen.projectname = get_name_file(temp);
1760 fileopen.localdir = get_name_dir(temp);
1761 fileopen.remotehost = NULL;
1762 fileopen.remoteuser = NULL;
1763 fileopen.remotepass = NULL;
1764 fileopen.netWorkProtocol = defaultNetWorkProtocol;
1765 CreeFeuille(treeViewProjects, noeud[NBNOD-1],fileopen.projectname,fileopen.projectname,
1766 fileopen.localdir,fileopen.remotehost,fileopen.remoteuser,fileopen.remotepass,fileopen.remotedir,NBNOD-1, fileopen.command, fileopen.netWorkProtocol);
1767 }
1768
1769 if(iprogram == PROG_IS_MPQC)
1770 {
1771 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1772 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
1773 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
1774 fileopen.moldenfile = g_strdup_printf("%s.molden",fileopen.projectname);
1775 }
1776 else
1777 if(iprogram == PROG_IS_GAMESS)
1778 {
1779 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1780 fileopen.outputfile = g_strdup_printf("%s.log",fileopen.projectname);
1781 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
1782 fileopen.moldenfile = g_strdup_printf("%s.log",fileopen.projectname);
1783 }
1784 else
1785 if(iprogram == PROG_IS_FIREFLY)
1786 {
1787 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1788 fileopen.outputfile = g_strdup_printf("%s.log",fileopen.projectname);
1789 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
1790 fileopen.moldenfile = g_strdup_printf("%s.log",fileopen.projectname);
1791 }
1792 else
1793 if(iprogram == PROG_IS_DEMON)
1794 {
1795 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1796 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
1797 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
1798 fileopen.moldenfile = g_strdup_printf("%s.out",fileopen.projectname);
1799 }
1800 else
1801 if(iprogram == PROG_IS_GAUSS)
1802 {
1803 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1804 fileopen.outputfile = g_strdup_printf("%s.log",fileopen.projectname);
1805 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
1806 fileopen.moldenfile = g_strdup_printf("%s.log",fileopen.projectname);
1807 }
1808 else if(iprogram == PROG_IS_MOLCAS)
1809 {
1810 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1811 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
1812 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
1813 fileopen.moldenfile = g_strdup_printf("%s.molden",fileopen.projectname);
1814 }
1815 else if(iprogram == PROG_IS_MOLPRO)
1816 {
1817 fileopen.datafile = g_strdup_printf("%s.com",fileopen.projectname);
1818 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
1819 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
1820 fileopen.moldenfile = g_strdup_printf("%s.molden",fileopen.projectname);
1821 }
1822 else if(iprogram == PROG_IS_QCHEM)
1823 {
1824 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1825 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
1826 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
1827 fileopen.moldenfile = g_strdup_printf("%s.molden",fileopen.projectname);
1828 }
1829 else if(iprogram == PROG_IS_ORCA)
1830 {
1831 fileopen.datafile = g_strdup_printf("%s.inp",fileopen.projectname);
1832 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
1833 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
1834 fileopen.moldenfile = g_strdup_printf("%s.molden",fileopen.projectname);
1835 }
1836 else
1837 {
1838 fileopen.datafile = g_strdup(NomFichier);
1839 fileopen.outputfile = g_strdup("Unknown");
1840 fileopen.logfile = g_strdup("Unknown");
1841 }
1842
1843 if(enreg_doc(NomFichier))
1844 {
1845 change_label_onglet();
1846 data_modify(FALSE);
1847 }
1848 }
1849 /********************************************************************************/
save_as_doc(void)1850 void save_as_doc(void)
1851 {
1852 choose_file_to_save();
1853 }
1854 /********************************************************************************/
save_doc(void)1855 void save_doc(void)
1856 {
1857 if ( strcmp(fileopen.datafile,"NoName") != 0)
1858 {
1859 gchar* FileName = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.datafile);
1860 if(enreg_doc(FileName))
1861 data_modify(FALSE);
1862
1863 g_free(FileName);
1864 }
1865 else
1866 choose_file_to_save();
1867 }
1868 /********************************************************************************/
new_doc_molcas(GtkWidget * wid,gpointer data)1869 void new_doc_molcas(GtkWidget* wid, gpointer data)
1870 {
1871 newMolcas();
1872 iprogram = PROG_IS_MOLCAS;
1873 }
1874 /********************************************************************************/
new_doc_molpro(GtkWidget * wid,gpointer data)1875 void new_doc_molpro(GtkWidget* wid, gpointer data)
1876 {
1877 molpro();
1878 iprogram = PROG_IS_MOLPRO;
1879 }
1880 /********************************************************************************/
new_doc_mpqc(GtkWidget * wid,gpointer data)1881 void new_doc_mpqc(GtkWidget* wid, gpointer data)
1882 {
1883 newMPQC();
1884 iprogram = PROG_IS_MPQC;
1885 }
1886 /********************************************************************************/
new_doc_gamess(GtkWidget * wid,gpointer data)1887 void new_doc_gamess(GtkWidget* wid, gpointer data)
1888 {
1889 newGamess();
1890 iprogram = PROG_IS_GAMESS;
1891 fileopen.command=g_strdup(NameCommandGamess);
1892 }
1893 /********************************************************************************/
new_doc_demon(GtkWidget * wid,gpointer data)1894 void new_doc_demon(GtkWidget* wid, gpointer data)
1895 {
1896 newDeMon();
1897 iprogram = PROG_IS_DEMON;
1898 fileopen.command=g_strdup(NameCommandDeMon);
1899 }
1900 /********************************************************************************/
new_doc_firefly(GtkWidget * wid,gpointer data)1901 void new_doc_firefly(GtkWidget* wid, gpointer data)
1902 {
1903 newFireFly();
1904 iprogram = PROG_IS_FIREFLY;
1905 fileopen.command=g_strdup(NameCommandFireFly);
1906 }
1907 /********************************************************************************/
new_doc_gauss(GtkWidget * wid,gpointer data)1908 void new_doc_gauss(GtkWidget* wid, gpointer data)
1909 {
1910 gauss(1);
1911 }
1912 /********************************************************************************/
new_doc_orca(GtkWidget * wid,gpointer data)1913 void new_doc_orca(GtkWidget* wid, gpointer data)
1914 {
1915 newOrca();
1916 iprogram = PROG_IS_ORCA;
1917 fileopen.command=g_strdup(NameCommandOrca);
1918 }
1919 /********************************************************************************/
new_doc_nwchem(GtkWidget * wid,gpointer data)1920 void new_doc_nwchem(GtkWidget* wid, gpointer data)
1921 {
1922 newNWChem();
1923 iprogram = PROG_IS_NWCHEM;
1924 fileopen.command=g_strdup(NameCommandNWChem);
1925 }
1926 /********************************************************************************/
new_doc_psicode(GtkWidget * wid,gpointer data)1927 void new_doc_psicode(GtkWidget* wid, gpointer data)
1928 {
1929 newPsicode();
1930 iprogram = PROG_IS_PSICODE;
1931 fileopen.command=g_strdup(NameCommandPsicode);
1932 }
1933 /********************************************************************************/
new_doc_qchem(GtkWidget * wid,gpointer data)1934 void new_doc_qchem(GtkWidget* wid, gpointer data)
1935 {
1936 newQChem();
1937 iprogram = PROG_IS_QCHEM;
1938 fileopen.command=g_strdup(NameCommandQChem);
1939 }
1940 /********************************************************************************/
new_doc_mopac(GtkWidget * wid,gpointer data)1941 void new_doc_mopac(GtkWidget* wid, gpointer data)
1942 {
1943 newMopac();
1944 iprogram = PROG_IS_MOPAC;
1945 fileopen.command=g_strdup(NameCommandMopac);
1946 }
1947 /********************************************************************************/
new_doc_other(GtkWidget * wid,gpointer data)1948 void new_doc_other(GtkWidget* wid, gpointer data)
1949 {
1950 gint nchar;
1951 reset_name_files();
1952 data_modify(TRUE);
1953 gabedit_text_set_point(GABEDIT_TEXT(text),0);
1954 nchar = gabedit_text_get_length(GABEDIT_TEXT(text));
1955 gabedit_text_forward_delete(GABEDIT_TEXT(text),nchar);
1956 gtk_notebook_set_current_page((GtkNotebook*)NoteBookText,0);
1957 }
1958 /********************************************************************************/
insert_doc_gauss(void)1959 void insert_doc_gauss(void)
1960 {
1961 gauss(0);
1962 }
1963 /********************************************************************************/
show_about_new()1964 static void show_about_new()
1965 {
1966 static const gchar *authors[] = {
1967 "Abdul-Rahman Allouche <allouchear@users.sourceforge.net>",
1968 NULL
1969 };
1970
1971 static const gchar *documenters[] = {
1972 "Abdul-Rahman Allouche <allouchear@users.sourceforge.net>",
1973 NULL
1974 };
1975
1976 static const gchar *copyright =
1977 "Copyright \xc2\xa9 2002-2013 Abdul-Rahman Allouche.\n"
1978 "All rights reserved.\n";
1979
1980 gchar *license =
1981 g_strdup_printf("%s%s",
1982 copyright,
1983 "\n"
1984 "Permission is hereby granted, free of charge, to any person obtaining a copy\n"
1985 "of this software(the Gabedit) and associated documentation files, to deal in\n"
1986 "the Software without restriction, including without limitation the rights to\n"
1987 "use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n"
1988 "of the Software, and to permit persons to whom the Software is furnished to \n"
1989 "do so, subject to the following conditions:\n"
1990 "\n"
1991 "The above copyright notice and this permission notice shall be included in all\n"
1992 "copies or substantial portions of the Software.\n"
1993 "\n"
1994 "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n"
1995 "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"
1996 "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n"
1997 "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n"
1998 "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n"
1999 "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n"
2000 "DEALINGS IN THE SOFTWARE."
2001 );
2002
2003 static const gchar *comments =
2004 "Graphical User Interface to DeMon, FireFly, GAMESS-US, Gaussian, Molcas, Molpro, "
2005 "OpenMopac, Orca, MPQC, NWChem and Q-Chem computational chemistry packages.\n\n"
2006 "Please use the following citations in any report or publication :\n"
2007 "A.R. ALLOUCHE, Gabedit - A graphical user interface for computational chemistry softwares,\n"
2008 "Journal of Computational Chemistry, 32, 174-182(2011)\n";
2009
2010 gchar *GABEDIT_VERSION =
2011 g_strdup_printf("%d.%d.%d",MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION);
2012
2013 gtk_about_dialog_set_url_hook(show_homepage, NULL, NULL);
2014
2015 gtk_show_about_dialog (
2016 NULL,
2017 "name", "Gabedit",
2018 "version", GABEDIT_VERSION,
2019 "comments", comments,
2020 "copyright", copyright,
2021 "license", license,
2022 "website", "http://gabedit.sourceforge.net",
2023 "documenters", documenters,
2024 "authors", authors,
2025 "logo-icon-name", GTK_STOCK_ABOUT,
2026 NULL);
2027
2028 g_free(GABEDIT_VERSION);
2029 g_free(license);
2030 }
2031 /********************************************************************************/
show_about()2032 void show_about()
2033 {
2034 if(GTK_MAJOR_VERSION>=2 && GTK_MINOR_VERSION>=6) show_about_new();
2035 else create_about_frame();
2036 }
2037 /********************************************************************************/
show_version()2038 void show_version()
2039 {
2040 gchar* Version_S = g_strdup_printf("%d.%d.%d",MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION);
2041 gchar *temp=g_strdup_printf("\n Version %s \n\n Abdul-Rahman ALLOUCHE\n",Version_S);
2042 Message(temp,_("Version"),TRUE);
2043 g_free(Version_S);
2044 g_free(temp);
2045 }
2046 /********************************************************************************/
show_homepage(GtkWidget * w,gpointer data)2047 void show_homepage(GtkWidget *w,gpointer data)
2048 {
2049
2050 #ifdef G_OS_WIN32
2051 gchar* Command = "Iexplore.exe http://gabedit.sourceforge.net/";
2052 system(Command);
2053 #else
2054 gchar* Command = "mozilla http://gabedit.sourceforge.net/ &";
2055 if (system(Command)<0)
2056 {
2057 gchar* Command = "galeon http://gabedit.sourceforge.net/ &";
2058 if (system(Command)<0)
2059 {
2060 gchar* Command = "konqueror http://gabedit.sourceforge.net/ &";
2061 {int ierr = system(Command);}
2062 }
2063 }
2064 #endif
2065 }
2066 /********************************************************************************/
desole(void)2067 void desole(void)
2068 {
2069 char *temp=_("Sorry , this option is not active");
2070 Message(temp,_("Warning"),TRUE);
2071 }
2072 /********************************************************************************/
change_insert(void)2073 void change_insert(void)
2074 {
2075 if (iedit==0)
2076 {
2077 iedit=1;
2078 gabedit_text_set_editable(GABEDIT_TEXT(text), TRUE);
2079 }
2080 else
2081 {
2082 iedit=0;
2083 gabedit_text_set_editable(GABEDIT_TEXT(text), FALSE);
2084 }
2085 }
2086 /********************************************************************************/
create_label_hbox(GtkWidget * hbox,gchar * tlabel,gint llen)2087 void create_label_hbox(GtkWidget *hbox,gchar *tlabel,gint llen)
2088 {
2089 GtkWidget* label;
2090 label = gtk_label_new(tlabel);
2091 gtk_widget_set_size_request(GTK_WIDGET(label),llen,-1);
2092 gtk_box_pack_start(GTK_BOX(hbox), label,FALSE,FALSE,2);
2093 }
2094 /********************************************************************************/
create_text(GtkWidget * win,GtkWidget * frame,gboolean editable)2095 GtkWidget *create_text(GtkWidget *win,GtkWidget *frame,gboolean editable)
2096 {
2097 GtkWidget *Text;
2098 GtkWidget *scrolledwindow;
2099 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
2100 g_object_ref (scrolledwindow);
2101 g_object_set_data_full (G_OBJECT (win), "scrolledwindow", scrolledwindow,
2102 (GDestroyNotify) g_object_unref);
2103 gtk_widget_show (scrolledwindow);
2104 gtk_container_add (GTK_CONTAINER (frame), scrolledwindow);
2105 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
2106
2107 Text = gabedit_text_new ();
2108 g_object_ref (Text);
2109 g_object_set_data_full (G_OBJECT (win), "Text", Text,
2110 (GDestroyNotify) g_object_unref);
2111 gtk_widget_show (Text);
2112 gtk_container_add (GTK_CONTAINER (scrolledwindow), Text);
2113 gabedit_text_set_editable (GABEDIT_TEXT (Text), editable);
2114 return Text;
2115 }
2116 /********************************************************************************/
gtk_combo_box_entry_set_popdown_strings(GtkWidget * comboBoxEntry,GList * list)2117 void gtk_combo_box_entry_set_popdown_strings(GtkWidget* comboBoxEntry, GList *list)
2118 {
2119 GList* l;
2120 GtkTreeModel * model = NULL;
2121 if(!list) return;
2122 model = gtk_combo_box_get_model(GTK_COMBO_BOX(comboBoxEntry));
2123 gtk_list_store_clear(GTK_LIST_STORE(model));
2124 l = list;
2125 while(l)
2126 {
2127 gtk_combo_box_append_text (GTK_COMBO_BOX (comboBoxEntry), (gchar*)(l->data));
2128 l = l->next;
2129 }
2130 gtk_combo_box_set_active(GTK_COMBO_BOX (comboBoxEntry), 0);
2131 }
2132 /********************************************************************************/
create_combo_box_entry(gchar ** tlist,gint nlist,gboolean edit,gint llen,gint elen)2133 GtkWidget* create_combo_box_entry(gchar **tlist,gint nlist, gboolean edit,gint llen,gint elen)
2134 {
2135 GtkWidget* combo;
2136 gint i;
2137 combo = gtk_combo_box_entry_new_text();
2138 for (i=0;i<nlist;i++) gtk_combo_box_append_text (GTK_COMBO_BOX (combo), tlist[i]);
2139 gtk_widget_set_size_request(GTK_WIDGET(combo),elen,-1);
2140 gtk_editable_set_editable((GtkEditable*) (GTK_BIN (combo)->child),edit);
2141 if(nlist>0) gtk_combo_box_set_active(GTK_COMBO_BOX (combo), 0);
2142 return combo;
2143 }
2144 /********************************************************************************/
create_combo_box_entry_liste(GtkWidget * Window,GtkWidget * hbox,gchar * lname,gchar ** liste,int n)2145 GtkWidget *create_combo_box_entry_liste(GtkWidget* Window,GtkWidget* hbox,gchar *lname,gchar **liste,int n)
2146 {
2147 int i;
2148 GtkWidget *label;
2149 GtkWidget *combo;
2150 GtkWidget *combo_entry;
2151
2152 if(lname)
2153 {
2154 label = gtk_label_new (lname);
2155 gtk_widget_show (label);
2156 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 2);
2157 }
2158
2159 combo = gtk_combo_box_entry_new_text ();
2160 gtk_widget_set_size_request(combo, (gint)(ScreenHeight*0.1), -1);
2161 gtk_widget_show (combo);
2162 gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 2);
2163
2164 for (i=0;i<n;i++) gtk_combo_box_append_text (GTK_COMBO_BOX (combo), liste[i]);
2165 if(n>0) gtk_combo_box_set_active(GTK_COMBO_BOX (combo), 0);
2166
2167 combo_entry = (GTK_BIN (combo)->child);
2168 gtk_widget_show (combo_entry);
2169 gtk_entry_set_text (GTK_ENTRY (combo_entry), liste[0]);
2170 return combo_entry;
2171 }
2172 /********************************************************************************/
create_label_combo_in_table(GtkWidget * table,gchar * tlabel,gchar ** tlist,gint nlist,gboolean edit,gint llen,gint elen,gint iligne)2173 GtkWidget* create_label_combo_in_table(GtkWidget *table,gchar *tlabel,gchar **tlist,gint nlist, gboolean edit,gint llen,gint elen, gint iligne)
2174 {
2175 GtkWidget* combo;
2176 GtkWidget* label;
2177 GtkWidget *hbox = gtk_hbox_new(0,FALSE);
2178 gint i;
2179
2180
2181 label = gtk_label_new(tlabel);
2182 gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT);
2183 gtk_widget_set_size_request(GTK_WIDGET(label),llen,-1);
2184 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
2185 gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, iligne, iligne+1, GTK_FILL, GTK_FILL, 1, 1);
2186 gtk_widget_show(label);
2187 gtk_widget_show(hbox);
2188
2189 label = gtk_label_new(":");
2190 gtk_table_attach(GTK_TABLE(table), label, 1, 2, iligne, iligne+1, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND), (GtkAttachOptions)(GTK_FILL|GTK_SHRINK), 1, 1);
2191
2192 combo = gtk_combo_box_entry_new_text();
2193 for (i=0;i<nlist;i++) gtk_combo_box_append_text (GTK_COMBO_BOX (combo), tlist[i]);
2194 if(nlist>0) gtk_combo_box_set_active(GTK_COMBO_BOX (combo), 0);
2195 gtk_widget_set_size_request(GTK_WIDGET(combo),elen,-1);
2196 gtk_table_attach(GTK_TABLE(table), combo, 2, 3, iligne, iligne+1, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND), (GtkAttachOptions)(GTK_FILL|GTK_SHRINK), 1, 1);
2197 gtk_widget_set_sensitive(GTK_BIN(combo)->child,edit);
2198 return GTK_BIN(combo)->child;
2199 }
2200 /********************************************************************************/
create_frame(GtkWidget * win,GtkWidget * box,gchar * title)2201 GtkWidget *create_frame(GtkWidget *win,GtkWidget *box,gchar *title)
2202 {
2203 GtkWidget *frame;
2204 frame = gtk_frame_new (title);
2205 gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
2206 gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 0);
2207 gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
2208 gtk_widget_show (frame);
2209 return frame;
2210 }
2211 /********************************************************************************/
create_hbox(GtkWidget * vbox)2212 GtkWidget *create_hbox(GtkWidget *vbox)
2213 {
2214 GtkWidget *hbox;
2215 hbox = gtk_hbox_new (TRUE, 0);
2216 gtk_widget_show (hbox);
2217 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
2218 return hbox;
2219 }
2220 /********************************************************************************/
create_vbox(GtkWidget * win)2221 GtkWidget *create_vbox(GtkWidget *win)
2222 {
2223 GtkWidget *vbox;
2224 vbox = gtk_vbox_new (FALSE, 0);
2225 gtk_widget_show (vbox);
2226 gtk_container_add (GTK_CONTAINER (win), vbox);
2227 return vbox;
2228 }
2229 /********************************************************************************/
create_label_button(GtkWidget * win,GtkWidget * frame,GtkWidget * Vbox,gchar * tlabel,gchar * tbutton)2230 GtkWidget *create_label_button(GtkWidget *win,GtkWidget *frame,GtkWidget* Vbox,
2231 gchar *tlabel,gchar *tbutton)
2232 {
2233 GtkWidget *label;
2234 GtkWidget *button;
2235 GtkWidget *hbox;
2236
2237 hbox = gtk_hbox_new (FALSE, 2);
2238 g_object_ref (hbox);
2239 gtk_widget_show (hbox);
2240 gtk_box_pack_start (GTK_BOX (Vbox), hbox, FALSE, FALSE, 0);
2241
2242 label = gtk_label_new (tlabel);
2243 g_object_ref (label);
2244 g_object_set_data_full (G_OBJECT (win), "label", label,
2245 (GDestroyNotify) g_object_unref);
2246 gtk_widget_show (label);
2247 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 2);
2248
2249 button = gtk_button_new_with_label (tbutton);
2250 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 2);
2251 gtk_widget_show (button);
2252 return button;
2253 }
2254 /********************************************************************************/
change_label_onglet()2255 void change_label_onglet()
2256 {
2257 GtkWidget *LabelOnglet = GTK_WIDGET(g_object_get_data(G_OBJECT(text),"LabelOnglet"));
2258 gchar *temp;
2259 GtkStyle *style;
2260
2261 temp=get_name_file(fileopen.datafile);
2262 gtk_label_set_text(GTK_LABEL(LabelOnglet),temp);
2263
2264 if(imodif == DATA_MOD_YES)
2265 {
2266 /*
2267 PangoFontDescription *font_desc;
2268
2269 font_desc = pango_font_description_from_string (FontsStyleLabel.fontname);
2270 */
2271 style = (GtkStyle*)g_object_get_data(G_OBJECT(text),"StyleRed");
2272
2273
2274 /*
2275 if (style && font_desc)
2276 {
2277 style->font_desc = font_desc;
2278 }
2279 */
2280 gtk_widget_set_style(LabelOnglet, style );
2281 }
2282 else
2283 {
2284 /*
2285 PangoFontDescription *font_desc;
2286
2287 font_desc = pango_font_description_from_string (FontsStyleLabel.fontname);
2288 */
2289 style = (GtkStyle*)g_object_get_data(G_OBJECT(text),"StyleDef");
2290
2291 /*
2292 if (style && font_desc)
2293 {
2294 style->font_desc = font_desc;
2295 }
2296 */
2297
2298 if(style) gtk_widget_set_style(LabelOnglet, style );
2299 }
2300
2301 temp=get_name_file(fileopen.outputfile);
2302 LabelOnglet = GTK_WIDGET(g_object_get_data(G_OBJECT(textresult),"LabelOnglet"));
2303 gtk_label_set_text(GTK_LABEL(LabelOnglet),temp);
2304
2305 g_free(temp);
2306
2307 }
2308 /********************************************************************************/
change_all_labels()2309 void change_all_labels()
2310 {
2311 change_label_onglet();
2312 set_label_infos_file();
2313 }
2314 /********************************************************************************/
add_widget_table(GtkWidget * Table,GtkWidget * wid,gushort line,gushort colonne)2315 void add_widget_table(GtkWidget *Table,GtkWidget *wid,gushort line,gushort colonne)
2316 {
2317
2318 gtk_table_attach(GTK_TABLE(Table),wid,colonne,colonne+1,line,line+1,
2319 (GtkAttachOptions)(GTK_FILL | GTK_SHRINK),
2320 (GtkAttachOptions)(GTK_FILL | GTK_SHRINK),
2321 3,3);
2322
2323 }
2324
2325 /********************************************************************************/
add_label_table(GtkWidget * Table,G_CONST_RETURN gchar * label,gushort line,gushort colonne)2326 GtkWidget *add_label_table(GtkWidget *Table, G_CONST_RETURN gchar *label,gushort line,gushort colonne)
2327 {
2328 GtkWidget *Label;
2329 GtkWidget *hbox = gtk_hbox_new(0,FALSE);
2330
2331 Label = gtk_label_new (label);
2332 gtk_label_set_justify(GTK_LABEL(Label),GTK_JUSTIFY_LEFT);
2333 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0);
2334 add_widget_table(Table,hbox,line,colonne);
2335
2336 return Label;
2337 }
2338 /********************************************************************************/
add_label_at_table(GtkWidget * Table,gchar * label,gushort line,gushort colonne,GtkJustification just)2339 GtkWidget *add_label_at_table(GtkWidget *Table,gchar *label,gushort line,gushort colonne,GtkJustification just)
2340 {
2341 GtkWidget *Label;
2342 GtkWidget *hbox = gtk_hbox_new(0,FALSE);
2343
2344 Label = gtk_label_new (label);
2345 gtk_label_set_justify(GTK_LABEL(Label),just);
2346 if(just ==GTK_JUSTIFY_CENTER)
2347 gtk_box_pack_start (GTK_BOX (hbox), Label, TRUE, TRUE, 0);
2348 else
2349 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0);
2350
2351 add_widget_table(Table,hbox,line,colonne);
2352
2353 return Label;
2354 }
2355 /********************************************************************************/
get_result()2356 void get_result()
2357 {
2358 gchar *t;
2359 gchar *fileName;
2360 guint nchar;
2361 guint taille=BSIZE;
2362 nchar=gabedit_text_get_length(GABEDIT_TEXT(textresult));
2363 if ((!fileopen.outputfile) || (strcmp(fileopen.outputfile,"") == 0)) return ;
2364 if ((!fileopen.localdir) || (strcmp(fileopen.localdir,"") == 0)) return ;
2365
2366 gabedit_text_set_point(GABEDIT_TEXT(textresult),0);
2367 gabedit_text_forward_delete(GABEDIT_TEXT(textresult),nchar);
2368
2369 fileName = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.outputfile);
2370 t = readFile(fileName);
2371 g_free(fileName);
2372 if(t!=NULL)
2373 {
2374 gtk_widget_set_sensitive(ResultLocalFrame, FALSE);
2375 nchar=strlen(t);
2376 gabedit_text_insert (GABEDIT_TEXT(textresult), NULL, NULL, NULL, t,nchar);
2377 gtk_widget_set_sensitive(ResultLocalFrame, TRUE);
2378 //g_free(t);
2379 }
2380 gabedit_text_set_point(GABEDIT_TEXT(textresult),0);
2381 }
2382 /********************************************************************************/
view_result_end()2383 void view_result_end()
2384 {
2385 gtk_notebook_set_current_page((GtkNotebook*)NoteBookText,1);
2386 get_result();
2387 goto_end_result(NULL,NULL);
2388 }
2389 /********************************************************************************/
view_result()2390 void view_result()
2391 {
2392 gtk_notebook_set_current_page((GtkNotebook*)NoteBookText,1);
2393 get_result();
2394 }
2395 /********************************************************************************/
create_hseparator(GtkWidget * vbox)2396 GtkWidget * create_hseparator(GtkWidget *vbox)
2397 {
2398 GtkWidget *hseparator;
2399 hseparator = gtk_hseparator_new ();
2400 g_object_ref (hseparator);
2401 g_object_set_data_full (G_OBJECT (vbox), "hseparator", hseparator, (GDestroyNotify) g_object_unref);
2402 gtk_widget_show (hseparator);
2403 gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, FALSE, 1);
2404 return hseparator;
2405 }
2406 /********************************************************************************/
create_vseparator(GtkWidget * hbox)2407 GtkWidget * create_vseparator(GtkWidget *hbox)
2408 {
2409 GtkWidget *vseparator;
2410 vseparator = gtk_vseparator_new ();
2411 g_object_ref (vseparator);
2412 g_object_set_data_full (G_OBJECT (hbox), "vseparator", vseparator, (GDestroyNotify) g_object_unref);
2413 gtk_widget_show (vseparator);
2414 gtk_box_pack_start (GTK_BOX (hbox), vseparator, FALSE, FALSE, 1);
2415 return vseparator;
2416 }
2417 /********************************************************************************/
create_vbox_false(GtkWidget * win)2418 GtkWidget* create_vbox_false(GtkWidget *win)
2419 {
2420 GtkWidget *vbox;
2421 vbox = gtk_vbox_new (FALSE, 0);
2422 gtk_container_add (GTK_CONTAINER (win), vbox);
2423 gtk_widget_show (vbox);
2424 return vbox;
2425 }
2426 /********************************************************************************/
create_hbox_false(GtkWidget * vbox)2427 GtkWidget* create_hbox_false(GtkWidget *vbox)
2428 {
2429 GtkWidget *hbox;
2430 hbox = gtk_hbox_new (FALSE, 0);
2431 gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 2);
2432 gtk_widget_show (hbox);
2433 return hbox;
2434 }
2435 /********************************************************************************/
create_hbox_true(GtkWidget * vbox)2436 GtkWidget* create_hbox_true(GtkWidget *vbox)
2437 {
2438 GtkWidget *hbox;
2439 hbox = gtk_hbox_new (FALSE, 0);
2440 gtk_box_pack_start (GTK_BOX(vbox), hbox, TRUE, TRUE, 2);
2441 gtk_widget_show (hbox);
2442 return hbox;
2443 }
2444 /********************************************************************************/
create_label_entry(GtkWidget * hbox,gchar * tlabel,gint llen,gint elen)2445 GtkWidget* create_label_entry(GtkWidget *hbox,gchar *tlabel,gint llen,gint elen)
2446 {
2447 GtkWidget* entry;
2448 GtkWidget* label;
2449
2450 label = gtk_label_new(tlabel);
2451 gtk_widget_set_size_request(GTK_WIDGET(label),llen,-1);
2452 gtk_box_pack_start(GTK_BOX(hbox), label,FALSE,FALSE,2);
2453
2454 entry = gtk_entry_new();
2455 gtk_widget_set_size_request(GTK_WIDGET(entry),elen,-1);
2456 gtk_box_pack_start(GTK_BOX(hbox), entry,FALSE,FALSE,2);
2457 return entry;
2458 }
2459 /********************************************************************************/
create_label_combo(GtkWidget * hbox,gchar * tlabel,gchar ** tlist,gint nlist,gboolean edit,gint llen,gint elen)2460 GtkWidget* create_label_combo(GtkWidget *hbox,gchar *tlabel,gchar **tlist,gint nlist, gboolean edit,gint llen,gint elen)
2461 {
2462 GtkWidget* combo;
2463 GtkWidget* label;
2464 gint i;
2465
2466 label = gtk_label_new(tlabel);
2467 gtk_widget_set_size_request(GTK_WIDGET(label),llen,-1);
2468 gtk_box_pack_start(GTK_BOX(hbox), label,FALSE,FALSE,2);
2469
2470 combo = gtk_combo_box_entry_new_text();
2471 for (i=0;i<nlist;i++) gtk_combo_box_append_text (GTK_COMBO_BOX (combo), tlist[i]);
2472 if(nlist>0) gtk_combo_box_set_active(GTK_COMBO_BOX (combo), 0);
2473 gtk_widget_set_size_request(GTK_WIDGET(combo),elen,-1);
2474 gtk_box_pack_start(GTK_BOX(hbox), combo,FALSE,FALSE,2);
2475 gtk_widget_set_sensitive(GTK_BIN(combo)->child,edit);
2476 return GTK_BIN(combo)->child;
2477 }
2478 /********************************************************************************/
show_forbidden_characters()2479 void show_forbidden_characters()
2480 {
2481 gchar *temp;
2482 gchar Forbidden[]={
2483 '0','1','2','3','4','5','6','7','8','9',
2484 '+','-','/','%','$','*','!','@','#','^',
2485 '&','(',')','|','\\','<','>','?',',','~',
2486 '`','\'','.','"',':',';'};
2487 guint All=36;
2488 guint i;
2489 temp = g_strdup(_("Sorry the name of varibale is not valid !\n\n"));
2490 temp = g_strdup_printf(_("%s The first character can not be one of : \n"),temp);
2491 for(i=0;i<10;i++)
2492 temp = g_strdup_printf("%s %c",temp,Forbidden[i]);
2493 temp = g_strdup_printf("%s \n\n",temp);
2494 temp = g_strdup_printf(_("%s Do not use the following characters :\n"),temp);
2495 for(i=11;i<All;i++)
2496 {
2497 temp = g_strdup_printf("%s %c ",temp,Forbidden[i]);
2498 if(i%10 == 0) temp = g_strdup_printf("%s \n",temp);
2499 }
2500 Message(temp,_("Error"),TRUE);
2501 g_free(temp);
2502 }
2503 /********************************************************************************/
cree_p_vbox()2504 void cree_p_vbox()
2505 {
2506 vboxmain = gtk_vbox_new (FALSE, 0);
2507 gtk_container_add (GTK_CONTAINER (Fenetre), vboxmain);
2508 gtk_widget_show (vboxmain);
2509 }
2510 /********************************************************************************/
cree_vboxs_list_text()2511 void cree_vboxs_list_text()
2512 {
2513 GtkWidget *hpaned;
2514
2515 hpaned = gtk_hpaned_new();
2516 gtk_container_add (GTK_CONTAINER (vboxmain), hpaned);
2517
2518 vboxlistfiles = gtk_vbox_new (FALSE, 0);
2519 gtk_paned_add1(GTK_PANED(hpaned), vboxlistfiles);
2520 gtk_widget_show (vboxlistfiles);
2521
2522 vboxtexts = gtk_vbox_new (FALSE, 0);
2523 gtk_paned_add2(GTK_PANED(hpaned), vboxtexts);
2524 gtk_widget_realize (vboxtexts);
2525 gtk_widget_show (vboxtexts);
2526 Hpaned = hpaned;
2527 }
2528 /********************************************************************************/
create_checkbutton(GtkWidget * win,GtkWidget * box,gchar * tlabel)2529 GtkWidget *create_checkbutton(GtkWidget *win,GtkWidget *box,gchar *tlabel)
2530 {
2531 GtkWidget* checkbutton;
2532 checkbutton = gtk_check_button_new_with_label (tlabel);
2533 g_object_ref (checkbutton);
2534 g_object_set_data_full (G_OBJECT (win), "checkbutton", checkbutton, (GDestroyNotify) g_object_unref);
2535 gtk_widget_show (checkbutton);
2536 gtk_box_pack_start (GTK_BOX (box), checkbutton, FALSE, FALSE, 0);
2537 return checkbutton;
2538 }
2539 /********************************************************************************/
Continue_YesNo(void (* func)(GtkWidget *,gpointer data),gpointer data,gchar * message)2540 GtkWidget *Continue_YesNo(void (*func)(GtkWidget*,gpointer data),gpointer data,gchar *message)
2541 {
2542 GtkWidget *DialogueMessage = NULL;
2543 GtkWidget *Label, *Bouton;
2544 GtkWidget *frame, *vboxframe;
2545 DialogueMessage = gtk_dialog_new();
2546 gtk_window_set_position(GTK_WINDOW(DialogueMessage),GTK_WIN_POS_CENTER);
2547 gtk_window_set_title(GTK_WINDOW(DialogueMessage),_("Warning"));
2548 gtk_window_set_transient_for(GTK_WINDOW(DialogueMessage),GTK_WINDOW(Fenetre));
2549 gtk_window_set_modal (GTK_WINDOW (DialogueMessage), TRUE);
2550
2551
2552 g_signal_connect(G_OBJECT(DialogueMessage), "delete_event", (GCallback)gtk_widget_destroy, NULL);
2553
2554 frame = gtk_frame_new (NULL);
2555 gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
2556 g_object_ref (frame);
2557 g_object_set_data_full (G_OBJECT (DialogueMessage), "frame", frame,(GDestroyNotify) g_object_unref);
2558 gtk_container_set_border_width (GTK_CONTAINER (frame), 10);
2559 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->vbox), frame,TRUE,TRUE,0);
2560 gtk_widget_show (frame);
2561 vboxframe = create_vbox(frame);
2562 gtk_widget_realize(DialogueMessage);
2563 Label = create_label_with_pixmap(DialogueMessage,message,_("Question"));
2564 gtk_box_pack_start(GTK_BOX(vboxframe), Label,TRUE,TRUE,0);
2565
2566 gtk_widget_realize(DialogueMessage);
2567
2568 Bouton = create_button(DialogueMessage,_("No"));
2569 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area),Bouton,TRUE,TRUE,0);
2570 g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
2571 GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
2572 gtk_widget_grab_default(Bouton);
2573
2574 Bouton = create_button(DialogueMessage,_("Yes"));
2575 gtk_box_pack_start( GTK_BOX(GTK_DIALOG(DialogueMessage)->action_area), Bouton,TRUE,TRUE,0);
2576 GTK_WIDGET_SET_FLAGS(Bouton, GTK_CAN_DEFAULT);
2577 g_signal_connect(G_OBJECT(Bouton), "clicked", (GCallback)func,data);
2578 g_signal_connect_swapped(G_OBJECT(Bouton), "clicked", (GCallback)gtk_widget_destroy, GTK_OBJECT(DialogueMessage));
2579
2580
2581 gtk_widget_show_all(DialogueMessage);
2582 return DialogueMessage;
2583 }
2584 /**********************************************************************************/
open_file(GtkWidget * widget,gchar * data)2585 void open_file(GtkWidget *widget, gchar *data)
2586 {
2587 gchar *t;
2588 if(imodif == DATA_MOD_YES)
2589 {
2590 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2591 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2592 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2593 Continue_YesNo(charge_doc, NULL,t);
2594 g_free(t);
2595 }
2596 else
2597 {
2598 charge_doc(NULL, NULL);
2599 data_modify(FALSE);
2600 }
2601 }
2602 /**********************************************************************************/
new_molcas(GtkWidget * widget,gchar * data)2603 void new_molcas(GtkWidget *widget, gchar *data)
2604 {
2605 gchar t[BSIZE];
2606 gchar t1[BSIZE];
2607 if(imodif == DATA_MOD_YES)
2608 {
2609 sprintf(t,_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2610 sprintf(t1,"%s",t);
2611 sprintf(t,_(" %sIf you continue, you lose what you have changed.\n\n"),t1);
2612 sprintf(t1,"%s",t);
2613 sprintf(t,_(" %sYou want to continue?\n"),t1);
2614 Continue_YesNo(new_doc_molcas, NULL,t);
2615 }
2616 else
2617 {
2618 new_doc_molcas(NULL, NULL);
2619 iprogram = PROG_IS_MOLCAS;
2620 fileopen.command=g_strdup(NameCommandMolcas);
2621 }
2622 }
2623 /**********************************************************************************/
new_molpro(GtkWidget * widget,gchar * data)2624 void new_molpro(GtkWidget *widget, gchar *data)
2625 {
2626 gchar *t;
2627 if(imodif == DATA_MOD_YES)
2628 {
2629 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2630 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2631 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2632 Continue_YesNo(new_doc_molpro, NULL,t);
2633 g_free(t);
2634 }
2635 else
2636 {
2637 new_doc_molpro(NULL, NULL);
2638 iprogram = PROG_IS_MOLPRO;
2639 fileopen.command=g_strdup(NameCommandMolpro);
2640 }
2641 }
2642 /**********************************************************************************/
new_mpqc(GtkWidget * widget,gchar * data)2643 void new_mpqc(GtkWidget *widget, gchar *data)
2644 {
2645 gchar *t;
2646 if(imodif == DATA_MOD_YES)
2647 {
2648 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2649 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2650 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2651 Continue_YesNo(new_doc_mpqc, NULL,t);
2652 g_free(t);
2653 }
2654 else
2655 {
2656 new_doc_mpqc(NULL, NULL);
2657 iprogram = PROG_IS_MPQC;
2658 fileopen.command=g_strdup(NameCommandMPQC);
2659 }
2660 }
2661 /**********************************************************************************/
new_firefly(GtkWidget * widget,gchar * data)2662 void new_firefly(GtkWidget *widget, gchar *data)
2663 {
2664 gchar *t;
2665 if(imodif == DATA_MOD_YES)
2666 {
2667 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2668 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2669 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2670 Continue_YesNo(new_doc_firefly, NULL,t);
2671 g_free(t);
2672 }
2673 else
2674 {
2675 new_doc_firefly(NULL, NULL);
2676 iprogram = PROG_IS_FIREFLY;
2677 fileopen.command=g_strdup(NameCommandFireFly);
2678 }
2679 }
2680 /**********************************************************************************/
new_demon(GtkWidget * widget,gchar * data)2681 void new_demon(GtkWidget *widget, gchar *data)
2682 {
2683 gchar *t;
2684 if(imodif == DATA_MOD_YES)
2685 {
2686 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2687 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2688 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2689 Continue_YesNo(new_doc_demon, NULL,t);
2690 g_free(t);
2691 }
2692 else
2693 {
2694 new_doc_demon(NULL, NULL);
2695 iprogram = PROG_IS_DEMON;
2696 fileopen.command=g_strdup(NameCommandDeMon);
2697 }
2698 }
2699 /**********************************************************************************/
new_gamess(GtkWidget * widget,gchar * data)2700 void new_gamess(GtkWidget *widget, gchar *data)
2701 {
2702 gchar *t;
2703 if(imodif == DATA_MOD_YES)
2704 {
2705 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2706 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2707 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2708 Continue_YesNo(new_doc_gamess, NULL,t);
2709 g_free(t);
2710 }
2711 else
2712 {
2713 new_doc_gamess(NULL, NULL);
2714 iprogram = PROG_IS_GAMESS;
2715 fileopen.command=g_strdup(NameCommandGamess);
2716 }
2717 }
2718 /**********************************************************************************/
new_gauss(GtkWidget * widget,gchar * data)2719 void new_gauss(GtkWidget *widget, gchar *data)
2720 {
2721 gchar *t;
2722 if(imodif == DATA_MOD_YES)
2723 {
2724 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2725 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2726 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2727 Continue_YesNo(new_doc_gauss, NULL,t);
2728 g_free(t);
2729 }
2730 else
2731 {
2732 new_doc_gauss(NULL, NULL);
2733 iprogram = PROG_IS_GAUSS;
2734 fileopen.command=g_strdup(NameCommandGaussian);
2735 }
2736 }
2737 /**********************************************************************************/
new_nwchem(GtkWidget * widget,gchar * data)2738 void new_nwchem(GtkWidget *widget, gchar *data)
2739 {
2740 gchar *t;
2741 if(imodif == DATA_MOD_YES)
2742 {
2743 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2744 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2745 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2746 Continue_YesNo(new_doc_nwchem, NULL,t);
2747 g_free(t);
2748 }
2749 else
2750 {
2751 new_doc_nwchem(NULL, NULL);
2752 iprogram = PROG_IS_NWCHEM;
2753 fileopen.command=g_strdup(NameCommandNWChem);
2754 }
2755 }
2756 /**********************************************************************************/
new_psicode(GtkWidget * widget,gchar * data)2757 void new_psicode(GtkWidget *widget, gchar *data)
2758 {
2759 gchar *t;
2760 if(imodif == DATA_MOD_YES)
2761 {
2762 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2763 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2764 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2765 Continue_YesNo(new_doc_psicode, NULL,t);
2766 g_free(t);
2767 }
2768 else
2769 {
2770 new_doc_psicode(NULL, NULL);
2771 iprogram = PROG_IS_PSICODE;
2772 fileopen.command=g_strdup(NameCommandPsicode);
2773 }
2774 }
2775 /**********************************************************************************/
new_orca(GtkWidget * widget,gchar * data)2776 void new_orca(GtkWidget *widget, gchar *data)
2777 {
2778 gchar *t;
2779 if(imodif == DATA_MOD_YES)
2780 {
2781 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2782 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2783 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2784 Continue_YesNo(new_doc_orca, NULL,t);
2785 g_free(t);
2786 }
2787 else
2788 {
2789 new_doc_orca(NULL, NULL);
2790 iprogram = PROG_IS_ORCA;
2791 fileopen.command=g_strdup(NameCommandOrca);
2792 }
2793 }
2794 /**********************************************************************************/
new_qchem(GtkWidget * widget,gchar * data)2795 void new_qchem(GtkWidget *widget, gchar *data)
2796 {
2797 gchar *t;
2798 if(imodif == DATA_MOD_YES)
2799 {
2800 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2801 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2802 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2803 Continue_YesNo(new_doc_qchem, NULL,t);
2804 g_free(t);
2805 }
2806 else
2807 {
2808 new_doc_qchem(NULL, NULL);
2809 iprogram = PROG_IS_QCHEM;
2810 fileopen.command=g_strdup(NameCommandQChem);
2811 }
2812 }
2813 /**********************************************************************************/
new_mopac(GtkWidget * widget,gchar * data)2814 void new_mopac(GtkWidget *widget, gchar *data)
2815 {
2816 gchar *t;
2817 if(imodif == DATA_MOD_YES)
2818 {
2819 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2820 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2821 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2822 Continue_YesNo(new_doc_mopac, NULL,t);
2823 g_free(t);
2824 }
2825 else
2826 {
2827 new_doc_mopac(NULL, NULL);
2828 iprogram = PROG_IS_MOPAC;
2829 fileopen.command=g_strdup(NameCommandMopac);
2830 }
2831 }
2832 /**********************************************************************************/
new_other(GtkWidget * widget,gchar * data)2833 void new_other(GtkWidget *widget, gchar *data)
2834 {
2835 gchar *t;
2836 if(imodif == DATA_MOD_YES)
2837 {
2838 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
2839 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
2840 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
2841 Continue_YesNo(new_doc_other, NULL,t);
2842 g_free(t);
2843 }
2844 else
2845 {
2846 new_doc_other(NULL, NULL);
2847 iprogram = PROG_IS_OTHER;
2848 }
2849 }
2850 /**********************************************************************************/
create_hbox_browser(GtkWidget * Wins,GtkWidget * vbox,gchar * tlabel,gchar * deffile,gchar ** patterns)2851 GtkWidget *create_hbox_browser(GtkWidget* Wins,GtkWidget* vbox,gchar *tlabel,gchar *deffile,gchar** patterns)
2852 {
2853 GtkWidget *Entry = NULL;
2854 GtkWidget *hbox ;
2855 GtkWidget *button;
2856 GtkWidget* Label;
2857
2858 hbox = create_hbox_false(vbox);
2859 /* The label */
2860 Label = gtk_label_new(tlabel);
2861 gtk_widget_set_size_request(GTK_WIDGET(Label),(gint)(ScreenHeight*0.06),-1);
2862 gtk_box_pack_start(GTK_BOX(hbox), Label,FALSE,FALSE,2);
2863
2864 /* The Entry */
2865 Entry = gtk_entry_new();
2866 gtk_box_pack_start(GTK_BOX(hbox), Entry,TRUE,TRUE,2);
2867 if(deffile)
2868 {
2869 gint len = strlen(deffile)*8;
2870 len = strlen(deffile)*(gint)(8);
2871
2872 gtk_widget_set_size_request(GTK_WIDGET(Entry),len,32);
2873 gtk_entry_set_text(GTK_ENTRY(Entry),deffile);
2874 }
2875 else
2876 gtk_widget_set_size_request(GTK_WIDGET(Entry),350,32);
2877
2878 /* The Button */
2879 button = create_button_pixmap(Wins,open_xpm,NULL);
2880 g_signal_connect_swapped(G_OBJECT (button), "clicked",G_CALLBACK(set_entry_selected_file),GTK_OBJECT(hbox));
2881 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 1);
2882 g_object_set_data(G_OBJECT (hbox), "Entry", Entry);
2883 g_object_set_data(G_OBJECT (hbox), "Button", button);
2884 g_object_set_data(G_OBJECT (hbox), "Label", Label);
2885 g_object_set_data(G_OBJECT (hbox), "Window", Wins);
2886 g_object_set_data(G_OBJECT (hbox), "Patterns",patterns);
2887 gtk_widget_show_all(hbox);
2888 return hbox;
2889 }
2890 /********************************************************************************/
create_table_browser(GtkWidget * Wins,GtkWidget * vbox)2891 GtkWidget* create_table_browser(GtkWidget *Wins,GtkWidget *vbox)
2892 {
2893 GtkWidget *table = gtk_table_new(2,4,FALSE);
2894 GtkWidget* buttonDirSelector = NULL;
2895 GtkWidget* entryFileName = NULL;
2896 GtkWidget* label = NULL;
2897 gint i;
2898 gint j;
2899
2900 gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
2901 /*----------------------------------------------------------------------------------*/
2902 i = 0;
2903 j = 0;
2904 add_label_table(table,_("Folder"),(gushort)i,(gushort)j);
2905 j = 1;
2906 label = gtk_label_new(":");
2907 gtk_table_attach(GTK_TABLE(table),label, j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL|GTK_SHRINK) , (GtkAttachOptions)(GTK_FILL|GTK_SHRINK), 1,1);
2908
2909 j = 2;
2910 buttonDirSelector = gabedit_dir_button();
2911 gtk_widget_set_size_request(GTK_WIDGET(buttonDirSelector),(gint)(ScreenHeight*0.2),-1);
2912 gtk_table_attach(GTK_TABLE(table),buttonDirSelector, j,j+4,i,i+1, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND), (GtkAttachOptions)(GTK_FILL|GTK_SHRINK), 1,1);
2913 g_object_set_data(G_OBJECT(Wins), "ButtonDirSelector", buttonDirSelector);
2914 /*----------------------------------------------------------------------------------*/
2915 i++;
2916 j = 0;
2917 add_label_table(table,_("File name"),(gushort)i,(gushort)j);
2918 j = 1;
2919 label = gtk_label_new(":");
2920 gtk_table_attach(GTK_TABLE(table),label, j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL|GTK_SHRINK) , (GtkAttachOptions)(GTK_FILL|GTK_SHRINK), 1,1);
2921 j = 2;
2922 entryFileName = gtk_entry_new();
2923 gtk_entry_set_text(GTK_ENTRY(entryFileName),"data.xyz");
2924 gtk_widget_set_size_request(GTK_WIDGET(entryFileName),(gint)(ScreenHeight*0.2),-1);
2925 gtk_table_attach(GTK_TABLE(table),entryFileName, j,j+4,i,i+1,
2926 (GtkAttachOptions)(GTK_FILL|GTK_EXPAND),
2927 (GtkAttachOptions)(GTK_FILL|GTK_SHRINK),
2928 1,1);
2929 g_object_set_data(G_OBJECT(Wins), "EntryFileName", entryFileName);
2930 /*----------------------------------------------------------------------------------*/
2931 gtk_widget_show_all(table);
2932 return table;
2933 }
2934 /********************************************************************************/
set_default_styles()2935 void set_default_styles()
2936 {
2937 /*
2938 gchar *font = NULL;
2939 gchar *fontLabel = NULL;
2940 gchar *rc_string = NULL;
2941
2942 if(FontsStyleOther.fontname) font = g_strdup_printf("font =\"%s\"",FontsStyleOther.fontname);
2943 else font = g_strdup(" ");
2944
2945 if(FontsStyleLabel.fontname) fontLabel = g_strdup_printf("font =\"%s\"",FontsStyleLabel.fontname);
2946 else fontLabel = g_strdup(" ");
2947
2948 rc_string=g_strdup_printf(
2949 "style \"allwid\""
2950 "{"
2951 "%s"
2952 "}"
2953 "style \"labels\""
2954 "{"
2955 "%s"
2956 "}"
2957 "style \"frames\""
2958 "{"
2959 "fg[NORMAL] = { 1., 0., 0. }"
2960 "bg[NORMAL] = { 0.5, 0.5, 0.5 }"
2961 "%s"
2962 "}"
2963 "style \"buttons\""
2964 "{"
2965 "fg[PRELIGHT] = { 0, 0.1, 1.0 }\n"
2966 "bg[PRELIGHT] = { 0.4, 0.4, 0.4 }\n"
2967 "bg[ACTIVE] = { 1.0, 0, 0 }\n"
2968 "fg[ACTIVE] = { 0, 1.0, 0 }\n"
2969 "bg[NORMAL] = { 0.65, 0.65, 0.65 }\n"
2970 "fg[NORMAL] = { 0.0, 0.0, 1.0 }\n"
2971 "bg[INSENSITIVE] = { 1.0, 1.0, 1.0 }\n"
2972 "fg[INSENSITIVE] = { 1.0, 0, 1.0 }\n"
2973 "%s"
2974 "}\n"
2975 "style \"toggle_button\" = \"button\"\n"
2976 "{\n"
2977 "fg[NORMAL] = { 0.0, 0.0, 0.0 }\n"
2978 "fg[ACTIVE] = { 0.0, 0.0, 1.0 }\n"
2979 "%s"
2980 "}\n"
2981
2982 "widget_class \"*Gtk*\" style \"allwid\"\n"
2983 "widget_class \"*GtkButton*\" style \"buttons\"\n"
2984 "widget_class \"*GtkCheckButton*\" style \"toggle_button\"\n"
2985 "widget_class \"*GtkRadioButton*\" style \"toggle_button\"\n"
2986 "widget_class \"*GtkToggleButton*\" style \"toggle_button\"\n"
2987 "widget_class \"*GtkFrame\" style \"frames\"\n"
2988 "widget_class \"*GtkLabel\" style \"labels\"\n"
2989 ,font,fontLabel,font,font,font);
2990
2991 gtk_rc_parse_string(rc_string);
2992
2993 g_free(rc_string);
2994 g_free(font);
2995 g_free(fontLabel);
2996 */
2997 gtk_rc_parse_string("gtk-icon-sizes = \"gtk-menu=13,13:gtk-small-toolbar=16,16:gtk-large-toolbar=24,24\"gtk-toolbar-icon-size = small-toolbar");
2998 }
2999 /********************************************************************************/
create_text_widget(GtkWidget * box,gchar * title,GtkWidget ** frame)3000 GtkWidget* create_text_widget(GtkWidget* box,gchar *title,GtkWidget **frame)
3001 {
3002 GtkWidget *scrolledwindow;
3003 GtkWidget *Frame;
3004 GtkWidget *Text;
3005
3006 Frame = gtk_frame_new(title);
3007 gtk_container_set_border_width(GTK_CONTAINER(Frame), 2);
3008 gtk_container_add (GTK_CONTAINER (box), Frame);
3009
3010 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
3011 gtk_widget_show (scrolledwindow);
3012 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow ),
3013 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3014
3015 gtk_container_add (GTK_CONTAINER (Frame), scrolledwindow);
3016 Text = gabedit_text_new ();
3017 set_tab_size (Text, 8);
3018 /*
3019 gabedit_text_set_word_wrap(GABEDIT_TEXT(Text), TRUE);
3020 gabedit_text_set_line_wrap(GABEDIT_TEXT(Text), TRUE);
3021 */
3022
3023 gtk_widget_show (Text);
3024 gtk_container_add (GTK_CONTAINER (scrolledwindow), Text);
3025 gabedit_text_set_editable (GABEDIT_TEXT (Text), FALSE);
3026 *frame = Frame;
3027
3028 return Text;
3029 }
3030 /*********************************************************************/
draw_density_orbitals_gamess_or_gauss_or_molcas_or_molpro(GtkWidget * wid,gpointer data)3031 void draw_density_orbitals_gamess_or_gauss_or_molcas_or_molpro(GtkWidget *wid,gpointer data)
3032 {
3033 if( iprogram == PROG_IS_GAMESS)
3034 {
3035 gchar** FileName = g_malloc(2*sizeof(gchar*));
3036 FileName[0] = NULL;
3037 FileName[1] = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.logfile);
3038 view_orb(Fenetre,2,FileName);
3039 g_free(FileName[1] );
3040 g_free(FileName);
3041 }
3042 else
3043 if( iprogram == PROG_IS_FIREFLY)
3044 {
3045 gchar** FileName = g_malloc(2*sizeof(gchar*));
3046 FileName[0] = NULL;
3047 FileName[1] = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.logfile);
3048 view_orb(Fenetre,2,FileName);
3049 g_free(FileName[1] );
3050 g_free(FileName);
3051 }
3052 else
3053 if( iprogram == PROG_IS_GAUSS)
3054 {
3055 gchar** FileName = g_malloc(2*sizeof(gchar*));
3056 FileName[0] = NULL;
3057 FileName[1] = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.logfile);
3058 view_orb(Fenetre,2,FileName);
3059 g_free(FileName[1] );
3060 g_free(FileName);
3061 }
3062 else
3063 if( iprogram == PROG_IS_MOLCAS)
3064 {
3065 gchar** FileName = g_malloc(2*sizeof(gchar*));
3066 FileName[0] = NULL;
3067 FileName[1] = g_strdup_printf("%s%s%s.scf.molden",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.projectname);
3068 view_orb(Fenetre,2,FileName);
3069 g_free(FileName[1] );
3070 g_free(FileName);
3071 }
3072 else
3073 if( iprogram == PROG_IS_MOLPRO)
3074 {
3075 gchar** FileName = g_malloc(2*sizeof(gchar*));
3076 FileName[0] = NULL;
3077 FileName[1] = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.outputfile);
3078 view_orb(Fenetre,2,FileName);
3079 g_free(FileName[1] );
3080 g_free(FileName);
3081 }
3082 else
3083 if( iprogram == PROG_IS_QCHEM)
3084 {
3085 gchar** FileName = g_malloc(2*sizeof(gchar*));
3086 FileName[0] = NULL;
3087 FileName[1] = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.outputfile);
3088 view_orb(Fenetre,2,FileName);
3089 g_free(FileName[1] );
3090 g_free(FileName);
3091 }
3092 if( iprogram == PROG_IS_MOPAC)
3093 {
3094 gchar** FileName = g_malloc(2*sizeof(gchar*));
3095 FileName[0] = NULL;
3096 FileName[1] = g_strdup_printf("%s%s%s",fileopen.localdir,G_DIR_SEPARATOR_S,fileopen.outputfile);
3097 view_orb(Fenetre,2,FileName);
3098 g_free(FileName[1] );
3099 g_free(FileName);
3100 }
3101 else
3102 view_orb(Fenetre,0,NULL);
3103 }
3104 /*********************************************************************/
set_last_directory(G_CONST_RETURN gchar * FileName)3105 void set_last_directory(G_CONST_RETURN gchar* FileName)
3106 {
3107 gchar* temp = get_suffix_name_file(FileName);
3108 gchar* localdir = get_name_dir(temp);
3109 if(!localdir) return;
3110 if(lastdirectory) g_free(lastdirectory);
3111 lastdirectory = g_strdup(localdir);
3112 if(temp) g_free(temp);
3113 if(localdir) g_free(localdir);
3114 if(lastdirectory && gabedit_directory() && strcmp(lastdirectory,gabedit_directory()))
3115 {int it = chdir(lastdirectory);}
3116 }
3117 /*********************************************************************/
get_last_directory()3118 gchar* get_last_directory()
3119 {
3120 return lastdirectory;
3121 }
3122 /******************************************************************/
set_dipole_color(GtkColorSelection * Sel,gpointer * d)3123 static void set_dipole_color(GtkColorSelection *Sel,gpointer *d)
3124 {
3125 GdkColor* color;
3126 color = g_object_get_data(G_OBJECT (Sel), "Color");
3127 gtk_color_selection_get_current_color(Sel, color);
3128 }
3129 /******************************************************************/
set_dipole_button_color(GtkObject * button,gpointer * data)3130 static void set_dipole_button_color(GtkObject *button,gpointer *data)
3131 {
3132 GtkStyle *style = g_object_get_data(G_OBJECT (button), "Style");
3133 GdkColor* color = g_object_get_data(G_OBJECT (button), "Color");
3134 GtkWidget *OldButton = g_object_get_data(G_OBJECT (button), "Button");
3135 style = gtk_style_copy(style);
3136 style->bg[0].red=color->red;
3137 style->bg[0].green=color->green;
3138 style->bg[0].blue= color->blue;
3139 gtk_widget_set_style(OldButton, style);
3140 }
3141 /******************************************************************/
open_color_dlg_dipole(GtkWidget * button,gpointer data)3142 static void open_color_dlg_dipole(GtkWidget *button,gpointer data)
3143 {
3144
3145 GtkColorSelectionDialog *colorDlg;
3146 GtkStyle* style = g_object_get_data(G_OBJECT (button), "Style");
3147 GtkWidget *win = g_object_get_data(G_OBJECT (button), "Win");
3148 GdkColor* color = g_object_get_data(G_OBJECT (button), "Color");;
3149
3150 colorDlg = (GtkColorSelectionDialog *)gtk_color_selection_dialog_new(_("Set Dipole Color"));
3151 gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (colorDlg->colorsel), color);
3152 gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (colorDlg->colorsel), color);
3153 gtk_window_set_transient_for(GTK_WINDOW(colorDlg),GTK_WINDOW(win));
3154 gtk_window_set_position(GTK_WINDOW(colorDlg),GTK_WIN_POS_CENTER);
3155 gtk_window_set_modal (GTK_WINDOW (colorDlg), TRUE);
3156 g_signal_connect(G_OBJECT(colorDlg), "delete_event",(GCallback)destroy_button_windows,NULL);
3157 g_signal_connect(G_OBJECT(colorDlg), "delete_event",G_CALLBACK(gtk_widget_destroy),NULL);
3158
3159 g_object_set_data(G_OBJECT (colorDlg->colorsel), "Color", color);
3160 gtk_widget_hide(colorDlg->help_button);
3161 g_signal_connect_swapped(G_OBJECT(colorDlg->ok_button),"clicked", (GCallback)set_dipole_color,GTK_OBJECT(colorDlg->colorsel));
3162
3163 g_object_set_data(G_OBJECT (colorDlg->ok_button), "Color", color);
3164 g_object_set_data(G_OBJECT (colorDlg->ok_button), "Button", button);
3165 g_object_set_data(G_OBJECT (colorDlg->ok_button), "Style", style);
3166 g_signal_connect(G_OBJECT(colorDlg->ok_button),"clicked", (GCallback)set_dipole_button_color,NULL);
3167
3168 g_signal_connect_swapped(G_OBJECT(colorDlg->ok_button), "clicked", (GCallback)destroy_button_windows,GTK_OBJECT(colorDlg));
3169 g_signal_connect_swapped(G_OBJECT(colorDlg->ok_button),"clicked", (GCallback)gtk_widget_destroy,GTK_OBJECT(colorDlg));
3170
3171 g_signal_connect_swapped(G_OBJECT(colorDlg->cancel_button), "clicked", (GCallback)destroy_button_windows,GTK_OBJECT(colorDlg));
3172 g_signal_connect_swapped(G_OBJECT(colorDlg->cancel_button),"clicked", (GCallback)gtk_widget_destroy,GTK_OBJECT(colorDlg));
3173
3174 add_button_windows(_(" Set Color "),GTK_WIDGET(colorDlg));
3175 gtk_widget_show(GTK_WIDGET(colorDlg));
3176
3177 }
3178 /*********************************************************************/
set_dipole_dialog()3179 GtkWidget* set_dipole_dialog ()
3180 {
3181 GtkWidget *fp;
3182 GtkWidget *frame;
3183 GtkWidget *vboxall;
3184 GtkWidget *vboxframe;
3185 GtkWidget *hbox;
3186 GtkWidget *button;
3187 GtkWidget *label;
3188 GtkStyle *style;
3189 static GtkWidget* entrys[8];
3190 static GdkColor color;
3191 gchar* tlabel[8]={"Factor : ","X(D) : ","Y(D) : ","Z(D) : ","Radius : ","X0(Ang) : ","Y0(Ang) : ","Z0(Ang) : "};
3192 gint i;
3193
3194 /* principal Window */
3195 fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
3196 gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
3197 gtk_window_set_title(GTK_WINDOW(fp),_("Set Dipole"));
3198 gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
3199
3200 gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
3201 gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
3202
3203 g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)gtk_widget_destroy,NULL);
3204
3205 vboxall = create_vbox(fp);
3206 frame = gtk_frame_new (_("Set Dipole(Debye)"));
3207 gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
3208 gtk_container_add (GTK_CONTAINER (vboxall), frame);
3209 gtk_widget_show (frame);
3210
3211 vboxframe = create_vbox(frame);
3212 for(i=0;i<5;i++)
3213 {
3214 hbox = create_hbox(vboxframe);
3215 label = gtk_label_new (tlabel[i]);
3216 gtk_widget_show (label);
3217 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0);
3218
3219 entrys[i] = gtk_entry_new ();
3220 gtk_widget_show (entrys[i]);
3221 gtk_box_pack_start (GTK_BOX (hbox), entrys[i], FALSE, TRUE, 0);
3222
3223 if(i!=0)
3224 {
3225 if(i==4)
3226 {
3227 gchar* t = g_strdup_printf("%f",Dipole.radius*AUTODEB);
3228 gtk_entry_set_text(GTK_ENTRY(entrys[i]),t);
3229 g_free(t);
3230 }
3231 else
3232 {
3233 gchar* t = g_strdup_printf("%f",Dipole.value[i-1]*AUTODEB);
3234 gtk_entry_set_text(GTK_ENTRY(entrys[i]),t);
3235 g_free(t);
3236 }
3237 }
3238 else
3239 {
3240 if(i==0)
3241 gtk_entry_set_text(GTK_ENTRY(entrys[i]),"1.0");
3242 else
3243 gtk_entry_set_text(GTK_ENTRY(entrys[i]),"0.0");
3244 }
3245 }
3246 for(i=5;i<8;i++)
3247 {
3248 hbox = create_hbox(vboxframe);
3249 label = gtk_label_new (tlabel[i]);
3250 gtk_widget_show (label);
3251 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0);
3252
3253 entrys[i] = gtk_entry_new ();
3254 gtk_widget_show (entrys[i]);
3255 gtk_box_pack_start (GTK_BOX (hbox), entrys[i], FALSE, TRUE, 0);
3256 {
3257 gchar* t = g_strdup_printf("%f",Dipole.origin[i-5]*BOHR_TO_ANG);
3258 gtk_entry_set_text(GTK_ENTRY(entrys[i]),t);
3259 g_free(t);
3260 }
3261 }
3262 hbox = gtk_hbox_new (TRUE, 0);
3263 gtk_widget_show (hbox);
3264 gtk_box_pack_start (GTK_BOX (vboxframe), hbox, FALSE, FALSE, 1);
3265
3266 label = gtk_label_new (_("Color : "));
3267 gtk_widget_show (label);
3268 gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0);
3269 style = gtk_widget_get_style(fp);
3270 button = gtk_button_new_with_label(" ");
3271 style = gtk_style_copy(style);
3272 style->bg[0].red=Dipole.color[0];
3273 style->bg[0].green=Dipole.color[1];
3274 style->bg[0].blue=Dipole.color[2];
3275
3276 color.red =style->bg[0].red;
3277 color.green =style->bg[0].green;
3278 color.blue =style->bg[0].blue;
3279 gtk_widget_set_style(button, style );
3280 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 1);
3281 gtk_widget_show (button);
3282 g_object_set_data(G_OBJECT (button), "Style", style);
3283 g_object_set_data(G_OBJECT (button), "Win", fp);
3284 g_object_set_data(G_OBJECT (button), "Color", &color);
3285 g_signal_connect(G_OBJECT(button), "clicked", (GCallback)open_color_dlg_dipole, NULL);
3286
3287 hbox = create_hbox(vboxall);
3288
3289 button = create_button(Fenetre,_("Close"));
3290 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
3291 g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(fp));
3292
3293 button = create_button(Fenetre,_("Apply"));
3294 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
3295 g_object_set_data(G_OBJECT (button), "Color", &color);
3296 g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(set_dipole),(gpointer)entrys);
3297 gtk_widget_show (button);
3298
3299
3300 button = create_button(Fenetre,_("OK"));
3301 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
3302 g_object_set_data(G_OBJECT (button), "Color", &color);
3303 g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(set_dipole),(gpointer)entrys);
3304 g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(fp));
3305 gtk_widget_show (button);
3306
3307
3308 gtk_widget_show (button);
3309
3310 gtk_widget_show_all(fp);
3311 return fp;
3312 }
3313 /*************************************************************************************/
fit_windows_position(GtkWidget * parent,GtkWidget * child)3314 void fit_windows_position(GtkWidget* parent, GtkWidget* child)
3315 {
3316 gint wChild = 0, hChild = 0;
3317 gint wParent=0, hParent=0;
3318 gdk_drawable_get_size(parent->window,&wParent,&hParent);
3319 gtk_window_move(GTK_WINDOW(parent),0,0);
3320 gdk_drawable_get_size(child->window,&wChild,&hChild);
3321 if(wParent+wChild+10<ScreenWidth) gtk_window_move(GTK_WINDOW(child),wParent+10,0);
3322 else if(wChild<ScreenWidth) gtk_window_move(GTK_WINDOW(child),ScreenWidth-wChild,0);
3323 }
3324 /*************************************************************************************/
readOneFile(gchar * fileName,gint n0,gint * nP,gdouble * dt)3325 static gdouble** readOneFile(gchar* fileName, gint n0, gint* nP, gdouble* dt)
3326 {
3327 gint nPoints = 0;
3328 gdouble** Dipole= NULL;
3329 FILE* file;
3330 gchar t[BSIZE];
3331 gint i;
3332 gint k;
3333 file = fopen(fileName,"rb");
3334 if(!file) printf("I cannot open '%s'\n",fileName);
3335 if(!file) return 0;
3336 k = 0;
3337 *nP = 0;
3338 *dt = 0;
3339 while(!feof(file))
3340 {
3341 if(!fgets(t,BSIZE,file))break;
3342 if(strstr(t,"Maximum Steps") && strstr(t,"="))
3343 {
3344 nPoints = atoi(strstr(t,"=")+1);
3345 }
3346 if(strstr(t," Time Step") && strstr(t,"="))
3347 {
3348 *dt = atof(strstr(t,"=")+1);
3349 }
3350 if(nPoints>0 && *dt>0) break;
3351 }
3352 rewind(file);
3353 if(nPoints == 0 && nPoints<n0) { return NULL;}
3354 Dipole = malloc(nPoints*sizeof(gdouble*));
3355 for(k=0;k<nPoints;k++) Dipole[k] = malloc(3*sizeof(gdouble));
3356 k = 0;
3357 while(!feof(file))
3358 {
3359 if(!fgets(t,BSIZE,file))break;
3360 if(strstr(t,"Dipole ="))
3361 {
3362 gchar* tt = strstr(t,"=")+1;
3363 gchar dum[16];
3364 gint j;
3365 if(k<n0) { k++; continue;}
3366 for(i=0;i<strlen(t);i++) if(t[i]=='D' || t[i] == 'd') t[i] = 'e';
3367 for(j=0;j<3;j++)
3368 {
3369 gint ii = 15;
3370 dum[ii] = '\0';
3371 for(i=0;i<ii;i++) dum[i] = tt[i];
3372 Dipole[k-n0][j] = atof(dum);
3373 dum[ii] = '\0';
3374 tt += ii;
3375 }
3376 k++;
3377 }
3378 else continue;
3379 if(k==nPoints) break;
3380 }
3381 if(k!=nPoints) printf("Warning : k != nPoints in %s file\n",fileName);
3382 fclose(file);
3383 *nP = nPoints-n0;
3384 return Dipole;
3385 }
3386 /********************************************************************************/
doAutoCorr(gdouble ** Dipole,gdouble * X,gint M)3387 static gint doAutoCorr(gdouble** Dipole, gdouble* X, gint M)
3388 {
3389 int m,n,j;
3390 for (m = 0; m < M; m++) X[m] = 0.0;
3391 /* This algorithm was adapted from the formulas given in
3392 J. Kohanoff Comp. Mat. Sci. 2 221-232 (1994). The estimator
3393 formulation used here is unbiased and statistically consistent,
3394 Looping through all time origins to collect an average -
3395 */
3396 int NCorr = 3*M/4;
3397 int Nav = M - NCorr;
3398 for (m = 0; m < NCorr; m++)
3399 for (n = 0; n < Nav; n++)
3400 for (j = 0; j < 3; j++)
3401 X[m] += Dipole[n + m][j] * Dipole[n][j];
3402 for (m = 0; m < NCorr; m++) X[m] /= Nav;
3403 return NCorr;
3404 }
3405 /********************************************************************************/
read_admp_dipole_dipole_file(GabeditFileChooser * filesel,gint response_id)3406 static gboolean read_admp_dipole_dipole_file(GabeditFileChooser *filesel, gint response_id)
3407 {
3408 gchar* fileName = NULL;
3409 GtkWidget* entryN = NULL;
3410 gint n0 = 1;
3411 gdouble* X = NULL;
3412 gdouble* Y = NULL;
3413 gdouble* Ytmp = NULL;
3414 gdouble** Dipole = NULL;
3415 gdouble dt;
3416 gint M = 0;
3417 gint MC = 0;
3418 gint k;
3419 GtkWidget* xyplot;
3420 GtkWidget* window;
3421 GSList* lists = NULL;
3422 GSList* cur = NULL;
3423 gint nf = 0;
3424 if(response_id != GTK_RESPONSE_OK) return FALSE;
3425
3426 lists = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(filesel));
3427
3428 entryN = g_object_get_data (G_OBJECT (filesel), "EntryN");
3429 if(!entryN) return FALSE;
3430 n0 = atoi(gtk_entry_get_text(GTK_ENTRY(entryN)));
3431 if(n0<0) n0 = 0;
3432
3433 create_popup_win(_("Please wait"));
3434 cur = lists;
3435 nf = 0;
3436 while(cur != NULL)
3437 {
3438 fileName = (gchar*)(cur->data);
3439 nf++;
3440 if(cur==lists)
3441 {
3442 Dipole = readOneFile(fileName, n0, &M, &dt);
3443 if(M<2)
3444 {
3445 Message(_("Error\n The number of steps <2 !\n"),_("Error"),TRUE);
3446 return FALSE;
3447 }
3448 X = g_malloc(M*sizeof(gdouble));
3449 Y = g_malloc(M*sizeof(gdouble));
3450 for(k=0;k<M;k++) X[k] = dt*k;
3451 MC = doAutoCorr(Dipole, Y, M);
3452 for(k=0;k<M;k++) g_free(Dipole[k]);
3453 g_free(Dipole);
3454 }
3455 else
3456 {
3457 gint m = 0;
3458 gint mc = 0;
3459 gdouble dt0;
3460 Dipole = readOneFile(fileName, n0, &m, &dt0);
3461
3462 if(m!=M || M<2)
3463 {
3464 Message(_("Error\n The number of steps is not same in all files\n"),_("Error"),TRUE);
3465 return FALSE;
3466 }
3467
3468 Ytmp = g_malloc(m*sizeof(gdouble));
3469 mc = doAutoCorr(Dipole, Ytmp, m);
3470 for(k=0;k<M;k++) g_free(Dipole[k]);
3471 g_free(Dipole);
3472 for(k=0;k<MC;k++) Y[k] += Ytmp[k];
3473 g_free(Ytmp);
3474 }
3475
3476 cur = cur->next;
3477 }
3478 if(nf>0) for(k=0;k<MC;k++) Y[k] /= nf;
3479
3480
3481 window = gabedit_xyplot_new_window(_("Dipole-Dipole autocorrelation"),NULL);
3482 xyplot = g_object_get_data(G_OBJECT (window), "XYPLOT");
3483 gabedit_xyplot_add_data_conv(GABEDIT_XYPLOT(xyplot),MC, X, Y, 1.0, GABEDIT_XYPLOT_CONV_NONE,NULL);
3484 gabedit_xyplot_set_range_xmin (GABEDIT_XYPLOT(xyplot), 0.0);
3485 g_free(X);
3486 g_free(Y);
3487
3488 return TRUE;
3489 }
3490 /********************************************************************************/
read_admp_build_dipole_dipole_autocorrelation_dlg()3491 void read_admp_build_dipole_dipole_autocorrelation_dlg()
3492 {
3493 GtkWidget* filesel =
3494 file_chooser_open(read_admp_dipole_dipole_file,
3495 _("Read the ADMP Gaussian output file to do a dipole_dipole autocorrelation function"),
3496 GABEDIT_TYPEFILE_GAUSSIAN,GABEDIT_TYPEWIN_OTHER);
3497 GtkWidget* entryN = gtk_entry_new();
3498 GtkWidget* hbox = gtk_hbox_new(FALSE,1);
3499 GtkWidget* hsep1 = gtk_hseparator_new();
3500 GtkWidget* hsep2 = gtk_hseparator_new();
3501 GtkWidget* labelN = gtk_label_new(_(" Number of steps to remove : "));
3502
3503 gtk_entry_set_text(GTK_ENTRY(entryN),"0");
3504
3505 gtk_box_pack_start (GTK_BOX (hbox), labelN, FALSE, FALSE, 0);
3506 gtk_box_pack_start (GTK_BOX (hbox), entryN, FALSE, FALSE, 0);
3507
3508 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(filesel)->vbox), hsep1, FALSE, FALSE, 0);
3509 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(filesel)->vbox), hbox, FALSE, FALSE, 0);
3510 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(filesel)->vbox), hsep2, FALSE, FALSE, 0);
3511 gtk_widget_show_all(hsep1);
3512 gtk_widget_show_all(hsep2);
3513 gtk_widget_show_all(hbox);
3514
3515 gtk_window_set_modal (GTK_WINDOW (filesel), TRUE);
3516 gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(filesel),TRUE);
3517 g_object_set_data (G_OBJECT (filesel), "EntryN",entryN);
3518 }
3519 /*************************************************************************************/
readOneTxtFile(gchar * fileName,gint n0,gint * nP,gdouble * dt)3520 static gdouble** readOneTxtFile(gchar* fileName, gint n0, gint* nP, gdouble* dt)
3521 {
3522 gint nPoints = 0;
3523 gdouble** Dipole= NULL;
3524 FILE* file;
3525 gchar t[BSIZE];
3526 gdouble d[4];
3527 gint i;
3528 gint k;
3529 double t0 = 0;
3530 file = fopen(fileName,"rb");
3531 if(!file) printf("I cannot open '%s'\n",fileName);
3532 if(!file) return 0;
3533 k = 0;
3534 *nP = 0;
3535 *dt = 0;
3536 while(!feof(file))
3537 {
3538 if(!fgets(t,BSIZE,file))break;
3539 if(sscanf(t,"%lf%lf%lf%lf",&d[0],&d[1],&d[2],&d[3])!=4)break;
3540 nPoints++;
3541 }
3542 rewind(file);
3543 if(nPoints == 0 || nPoints<n0) { return NULL;}
3544 Dipole = malloc(nPoints*sizeof(gdouble*));
3545 for(k=0;k<nPoints;k++) Dipole[k] = malloc(3*sizeof(gdouble));
3546 k = 0;
3547 *dt = 0;
3548 while(!feof(file))
3549 {
3550 if(!fgets(t,BSIZE,file))break;
3551 if(sscanf(t,"%lf%lf%lf%lf",&d[0],&d[1],&d[2],&d[3])!=4)break;
3552 if(k>=n0) for(i=0;i<3;i++) Dipole[k-n0][i] = d[i+1];
3553 *dt = d[0];
3554 if(k==0) t0 = d[0];
3555 k++;
3556 if(k==nPoints) break;
3557 }
3558 *dt = (*dt-t0)/nPoints;
3559 fclose(file);
3560 *nP = nPoints-n0;
3561 return Dipole;
3562 }
3563 /********************************************************************************/
read_dipole_text_file(GabeditFileChooser * filesel,gint response_id)3564 static gboolean read_dipole_text_file(GabeditFileChooser *filesel, gint response_id)
3565 {
3566 gchar* fileName = NULL;
3567 GtkWidget* entryN = NULL;
3568 gint n0 = 1;
3569 gdouble* X = NULL;
3570 gdouble* Y = NULL;
3571 gdouble* Ytmp = NULL;
3572 gdouble** Dipole = NULL;
3573 gdouble dt;
3574 gint M = 0;
3575 gint MC = 0;
3576 gint k;
3577 GtkWidget* xyplot;
3578 GtkWidget* window;
3579 GSList* lists = NULL;
3580 GSList* cur = NULL;
3581 gint nf = 0;
3582 if(response_id != GTK_RESPONSE_OK) return FALSE;
3583
3584 lists = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(filesel));
3585
3586 entryN = g_object_get_data (G_OBJECT (filesel), "EntryN");
3587 if(!entryN) return FALSE;
3588 n0 = atoi(gtk_entry_get_text(GTK_ENTRY(entryN)));
3589 if(n0<0) n0 = 0;
3590
3591 create_popup_win(_("Please wait"));
3592 cur = lists;
3593 nf = 0;
3594 while(cur != NULL)
3595 {
3596 fileName = (gchar*)(cur->data);
3597 nf++;
3598 if(cur==lists)
3599 {
3600 Dipole = readOneTxtFile(fileName, n0, &M, &dt);
3601 if(M<2)
3602 {
3603 Message(_("Error\n The number of steps <2 !\n"),_("Error"),TRUE);
3604 return FALSE;
3605 }
3606 X = g_malloc(M*sizeof(gdouble));
3607 Y = g_malloc(M*sizeof(gdouble));
3608 for(k=0;k<M;k++) X[k] = dt*k;
3609 MC = doAutoCorr(Dipole, Y, M);
3610 for(k=0;k<M;k++) g_free(Dipole[k]);
3611 g_free(Dipole);
3612 }
3613 else
3614 {
3615 gint m = 0;
3616 gint mc = 0;
3617 gdouble dt0;
3618 Dipole = readOneTxtFile(fileName, n0, &m, &dt0);
3619
3620 if(m!=M || M<2)
3621 {
3622 Message(_("Error\n The number of steps is not same in all files\n"),_("Error"),TRUE);
3623 return FALSE;
3624 }
3625
3626 Ytmp = g_malloc(m*sizeof(gdouble));
3627 mc = doAutoCorr(Dipole, Ytmp, m);
3628 for(k=0;k<M;k++) g_free(Dipole[k]);
3629 g_free(Dipole);
3630 for(k=0;k<MC;k++) Y[k] += Ytmp[k];
3631 g_free(Ytmp);
3632 }
3633
3634 cur = cur->next;
3635 }
3636 if(nf>0) for(k=0;k<MC;k++) Y[k] /= nf;
3637
3638
3639 window = gabedit_xyplot_new_window(_("Dipole-Dipole autocorrelation"),NULL);
3640 xyplot = g_object_get_data(G_OBJECT (window), "XYPLOT");
3641 gabedit_xyplot_add_data_conv(GABEDIT_XYPLOT(xyplot),MC, X, Y, 1.0, GABEDIT_XYPLOT_CONV_NONE,NULL);
3642 gabedit_xyplot_set_range_xmin (GABEDIT_XYPLOT(xyplot), 0.0);
3643 g_free(X);
3644 g_free(Y);
3645
3646 return TRUE;
3647 }
3648 /********************************************************************************/
read_dipole_build_dipole_dipole_autocorrelation_dlg()3649 void read_dipole_build_dipole_dipole_autocorrelation_dlg()
3650 {
3651 GtkWidget* filesel =
3652 file_chooser_open(read_dipole_text_file,
3653 _("Read dipole from an ascii file(fs,au,au,au) to do a dipole_dipole autocorrelation function"),
3654 GABEDIT_TYPEFILE_TXT,GABEDIT_TYPEWIN_OTHER);
3655 GtkWidget* entryN = gtk_entry_new();
3656 GtkWidget* hbox = gtk_hbox_new(FALSE,1);
3657 GtkWidget* hsep1 = gtk_hseparator_new();
3658 GtkWidget* hsep2 = gtk_hseparator_new();
3659 GtkWidget* labelN = gtk_label_new(_(" Number of steps to remove : "));
3660
3661 gtk_entry_set_text(GTK_ENTRY(entryN),"0");
3662
3663 gtk_box_pack_start (GTK_BOX (hbox), labelN, FALSE, FALSE, 0);
3664 gtk_box_pack_start (GTK_BOX (hbox), entryN, FALSE, FALSE, 0);
3665
3666 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(filesel)->vbox), hsep1, FALSE, FALSE, 0);
3667 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(filesel)->vbox), hbox, FALSE, FALSE, 0);
3668 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(filesel)->vbox), hsep2, FALSE, FALSE, 0);
3669 gtk_widget_show_all(hsep1);
3670 gtk_widget_show_all(hsep2);
3671 gtk_widget_show_all(hbox);
3672
3673 gtk_window_set_modal (GTK_WINDOW (filesel), TRUE);
3674 gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(filesel),TRUE);
3675 g_object_set_data (G_OBJECT (filesel), "EntryN",entryN);
3676 }
3677 /********************************************************************************/
gabedit_dir_button()3678 GtkWidget* gabedit_dir_button()
3679 {
3680 gboolean ret = FALSE;
3681 GtkWidget* buttonDirSelector;
3682 gchar* initial_dir = g_get_current_dir ();
3683
3684 buttonDirSelector = gtk_file_chooser_button_new(_("Select your folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
3685 ret = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(buttonDirSelector), initial_dir);
3686 if( ! ret ) ret = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(buttonDirSelector), "/");
3687 return buttonDirSelector;
3688 }
3689
3690 /********************************************************************************************************/
add_cancel_ok_buttons(GtkWidget * Win,GtkWidget * vbox,GCallback myFunc)3691 void add_cancel_ok_buttons(GtkWidget *Win, GtkWidget *vbox, GCallback myFunc)
3692 {
3693 GtkWidget *hbox;
3694 GtkWidget *button;
3695 /* buttons box */
3696 hbox = create_hbox_false(vbox);
3697 gtk_widget_realize(Win);
3698
3699 button = create_button(Win,_("Cancel"));
3700 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
3701 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
3702 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)delete_child, GTK_OBJECT(Win));
3703 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)gtk_widget_destroy,GTK_OBJECT(Win));
3704 gtk_widget_show (button);
3705
3706 button = create_button(Win,_("OK"));
3707 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
3708 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
3709 gtk_widget_grab_default(button);
3710 gtk_widget_show (button);
3711 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)myFunc,GTK_OBJECT(Win));
3712
3713 gtk_widget_show_all(vbox);
3714 }
3715