1 /* GInterfaceRoute.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 <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 
26 #include "../Common/Global.h"
27 #include "../Utils/Utils.h"
28 #include "../Utils/UtilsInterface.h"
29 #include "../Utils/GabeditTextEdit.h"
30 #include "../Geometry/GeomGlobal.h"
31 #include "../Geometry/GeomXYZ.h"
32 #include "../Geometry/InterfaceGeom.h"
33 #include "GInterfaceLink.h"
34 #include "GInterfaceMethodeBase.h"
35 #include "GaussGlobal.h"
36 #include "GInterfaceGeom.h"
37 static GtkWidget *EntryChargeSpin[6];
38 
39 /*******************************************************************/
GetChargesAndMultiplicitiesFromMain()40 void GetChargesAndMultiplicitiesFromMain( )
41 {
42   	G_CONST_RETURN gchar *entrytext;
43 
44         if(EntryChargeSpin[0]!=NULL)
45 	{
46   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[0]));
47         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
48         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
49 
50   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[1]));
51         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
52         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
53         }
54         if(EntryChargeSpin[2]!=NULL)
55 	{
56   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[2]));
57         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
58         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
59 
60   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[3]));
61         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
62         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
63 
64   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[2]));
65         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
66         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
67 
68   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[3]));
69         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
70         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
71         }
72         if(EntryChargeSpin[4]!=NULL)
73 	{
74   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[4]));
75         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
76         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
77 
78   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[5]));
79         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
80         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
81 
82   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[4]));
83         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
84         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
85 
86   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[5]));
87         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
88         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
89 
90   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[4]));
91         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
92         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
93 
94   		entrytext = gtk_entry_get_text(GTK_ENTRY(EntryChargeSpin[5]));
95         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,entrytext,-1);
96         	gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL," \t",-1);
97         }
98 
99         gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL,"\n",-1);
100 }
101 /************************************************************************************************************/
get_number_of_model_connections()102 static gint get_number_of_model_connections()
103 {
104 	gint i;
105 	gint j;
106 	gint nc = 0;
107 	gint NC = NcentersXYZ;
108 	if(MethodeGeom == GEOM_IS_ZMAT) NC = NcentersZmat;
109     	for(i=0;i<NC;i++)
110 	{
111 		if( MethodeGeom == GEOM_IS_XYZ)
112 			if(strstr(GeomXYZ[i].Layer,"Me") || strstr(GeomXYZ[i].Layer,"Lo")) continue;
113 		if( MethodeGeom == GEOM_IS_ZMAT)
114 			if(strstr(Geom[i].Layer,"Me") || strstr(Geom[i].Layer,"Lo")) continue;
115     		for(j=0;j<NC;j++)
116 		{
117 			if(i==j) continue;
118 			if( MethodeGeom == GEOM_IS_XYZ)
119 				if(!strstr(GeomXYZ[j].Layer,"Me") && !strstr(GeomXYZ[j].Layer,"Lo")) continue;
120 			if( MethodeGeom == GEOM_IS_ZMAT)
121 				if(!strstr(Geom[j].Layer,"Me") && !strstr(Geom[j].Layer,"Lo")) continue;
122 			if(connecteds(i,j)) nc++;
123 		}
124 	}
125 	return nc;
126 }
127 /************************************************************************************************************/
get_number_of_inter_connections()128 static gint get_number_of_inter_connections()
129 {
130 	gint i;
131 	gint j;
132 	gint nc = 0;
133 	gint NC = NcentersXYZ;
134 	if(MethodeGeom == GEOM_IS_ZMAT) NC = NcentersZmat;
135     	for(i=0;i<NC;i++)
136 	{
137 
138 		if( MethodeGeom == GEOM_IS_XYZ)
139 			if(strstr(GeomXYZ[i].Layer," ") || strstr(GeomXYZ[i].Layer,"Lo") || strstr(GeomXYZ[i].Layer,"Hi")) continue;
140 		if( MethodeGeom == GEOM_IS_ZMAT)
141 			if(strstr(Geom[i].Layer," ") || strstr(Geom[i].Layer,"Lo") || strstr(Geom[i].Layer,"Hi")) continue;
142 
143     		for(j=0;j<NC;j++)
144 		{
145 			if(i==j) continue;
146 			if( MethodeGeom == GEOM_IS_XYZ)
147 				if(!strstr(GeomXYZ[j].Layer," ") && !strstr(GeomXYZ[j].Layer,"Lo") && !strstr(GeomXYZ[j].Layer,"Hi")) continue;
148 			if( MethodeGeom == GEOM_IS_ZMAT)
149 				if(!strstr(Geom[j].Layer," ") && !strstr(Geom[j].Layer,"Lo") && !strstr(Geom[j].Layer,"Hi")) continue;
150 			if(connecteds(i,j)) nc++;
151 		}
152 	}
153 	return nc;
154 }
155 /************************************************************************************************************/
set_spin_of_electrons_for_main()156 static void set_spin_of_electrons_for_main()
157 {
158         gint i;
159         guint NumberElectrons[3];
160         guint SpinElectrons[3];
161         gchar* chaine;
162 
163         if(EntryChargeSpin[0] == NULL ) return;
164         NumberElectrons[2]= get_number_electrons(2);
165         NumberElectrons[1]= get_number_electrons(1);
166         NumberElectrons[0]= get_number_electrons(0);
167 
168         for(i=0;i<3;i++)
169 		SpinElectrons[i]=0;
170         if(NMethodes==3)
171 	{
172         	NumberElectrons[2] += get_number_of_model_connections();
173         	NumberElectrons[1] += get_number_of_inter_connections();
174 	}
175         if(NMethodes==2)
176 	{
177         	NumberElectrons[1] += get_number_of_model_connections();
178 	}
179 
180         for(i=0;(guint)i<NMethodes;i++)
181         	if((NumberElectrons[i]-TotalCharges[i])%2==0)
182 			SpinElectrons[i]=1;
183                 else
184 			SpinElectrons[i]=2;
185 
186         for(i=0;(guint)i<NMethodes;i++)
187         {
188 		if(SpinMultiplicities[i]%2 != SpinElectrons[i]%2)
189 			SpinMultiplicities[i] = SpinElectrons[i];
190          	chaine = g_strdup_printf("%d",SpinMultiplicities[i]);
191 	 	if(EntryChargeSpin[2*i+1] && GTK_IS_ENTRY(EntryChargeSpin[2*i+1]))
192 		{
193          		gtk_entry_set_text(GTK_ENTRY(EntryChargeSpin[2*i+1]),chaine);
194 		}
195         }
196 }
197 /************************************************************************************************************/
change_of_charge(GtkWidget * entry,gpointer d)198 static void change_of_charge(GtkWidget *entry,gpointer d)
199 {
200         G_CONST_RETURN gchar *entry_text;
201         gint *Number;
202 
203         Number = (gint*)d;
204         entry_text = gtk_entry_get_text(GTK_ENTRY(entry));
205         TotalCharges[*Number] = atoi(entry_text);
206 	set_spin_of_electrons_for_main();
207 
208 }
209 /************************************************************************************************************/
create_combo_charge(GtkWidget * hbox,gint Num,gchar * tlabel)210 static void create_combo_charge(GtkWidget *hbox,gint Num,gchar *tlabel)
211 {
212   gchar *tlist[]={"0","1","-1","2","-2","3","-3","4","-4"};
213   gchar* t = NULL;
214   gint *Number;
215   Number = g_malloc(sizeof(gint));
216   *Number = Num/2;
217   EntryChargeSpin[Num] = create_label_combo(hbox,tlabel,tlist,9,TRUE,-1,(gint)(ScreenHeight*0.1));
218   g_signal_connect(G_OBJECT(EntryChargeSpin[Num]), "changed", G_CALLBACK(change_of_charge), Number);
219   t = g_strdup_printf("%d",TotalCharges[*Number]);
220   gtk_entry_set_text(GTK_ENTRY(EntryChargeSpin[Num]),t);
221   g_free(t);
222   /* TotalCharges[*Number] = 0;*/
223 }
224 /************************************************************************************************************/
create_combo_spin(GtkWidget * hbox,gint Num,gchar * tlabel)225 static void create_combo_spin(GtkWidget *hbox,gint Num,gchar *tlabel)
226 {
227   gchar *tlist[]={"1","2","3","4","5","6","7","8","9"};
228   EntryChargeSpin[Num] = create_label_combo(hbox,tlabel,tlist,9,TRUE,-1,(gint)(ScreenHeight*0.1));
229 }
230 /************************************************************************************************************/
addChargeSpinFrame(GtkWidget * vboxmain)231 static void addChargeSpinFrame(GtkWidget *vboxmain)
232 {
233   GtkWidget *window1;
234   GtkWidget *Frame;
235   GtkWidget *vbox;
236   GtkWidget *hbox;
237   GtkWidget *hbox2;
238   gint i;
239   gboolean medium = geometry_with_medium_layer();
240   gboolean lower = geometry_with_lower_layer();
241 
242   for(i=0;i<6;i++)
243 	EntryChargeSpin[i] = NULL;
244 
245   Frame = gtk_frame_new(_("Molecular Specifications"));
246   gtk_container_set_border_width(GTK_CONTAINER(Frame), 5);
247 
248   gtk_container_add (GTK_CONTAINER (vboxmain),  Frame);
249 
250   window1 = Frame;
251   g_object_set_data(G_OBJECT (window1), "window1", window1);
252 
253   vbox =create_vbox(window1);
254 
255   hbox =create_hbox_false(vbox);
256   hbox2 =create_hbox_false(vbox);
257   NMethodes = 0;
258 
259   if(medium || lower )
260   {
261   	create_label_hbox(hbox, _("Charge of   "),100);
262   	create_combo_charge(hbox,0,_("Real system : "));
263   	create_label_hbox(hbox2,_("2*Spin+1 of "),100);
264   	create_combo_spin(hbox2,1,_("Real system : "));
265         NMethodes++;
266   }
267   else
268   {
269   	create_label_hbox(hbox,_("Charge of   "),-1);
270   	create_combo_charge(hbox,0,_("system : "));
271   	create_label_hbox(hbox,_("2*Spin+1 of "),-1);
272   	create_combo_spin(hbox,1,_("system : "));
273         NMethodes++;
274   }
275   if(medium && lower )
276   {
277   	create_combo_charge(hbox,2,_("Intermediate system : "));
278   	create_combo_spin(hbox2,3,_("Intermediate system : "));
279   	NMethodes++;
280   	create_combo_charge(hbox,4,_("Model system : "));
281   	create_combo_spin(hbox2,5,_("Model system : "));
282   	NMethodes++;
283   }
284   else
285   if(medium || lower )
286   {
287   	create_combo_charge(hbox,2,_("Model system : "));
288   	create_combo_spin(hbox2,3,_("Model system : "));
289   	NMethodes++;
290   }
291 
292   set_spin_of_electrons_for_main();
293 }
294 
295 /*****************************************************************************************/
polar_activate(GtkWidget * button,gpointer data)296 static void polar_activate(GtkWidget *button,gpointer data)
297 {
298   	GtkWidget* buttonOptions =(GtkWidget*)data;
299 	if (GTK_TOGGLE_BUTTON (button)->active)
300 	{
301   		if(Tpolar == NULL ) Tpolar=g_malloc(50*sizeof(gchar));
302   		sprintf(Tpolar," polar");
303 		if(GTK_IS_WIDGET(buttonOptions)) gtk_widget_set_sensitive(buttonOptions,TRUE);
304 	}
305 	else
306 	{
307   		if(Tpolar) g_free(Tpolar);
308   		Tpolar = NULL;
309 		if(GTK_IS_WIDGET(buttonOptions)) gtk_widget_set_sensitive(buttonOptions,FALSE);
310 	}
311 }
312 /*****************************************************************************************/
gene_polar(GtkWidget * b,gpointer data)313 static void gene_polar(GtkWidget *b,gpointer data)
314 {
315   GtkWidget **entryall;
316   GtkWidget *entry;
317   G_CONST_RETURN gchar *entrytext;
318   guint ipar;
319   ipar=0;
320   if(Tpolar == NULL ) Tpolar=g_malloc(50*sizeof(gchar));
321   sprintf(Tpolar," polar");
322   entryall=(GtkWidget **)data;
323   entry=entryall[0];
324   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
325   if (strcmp(entrytext,_("default")) )
326   {
327   ipar=1;
328   sprintf(Tpolar+strlen(Tpolar),"(%s",entrytext);
329   }
330   entry=entryall[1];
331   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
332   if (strcmp(entrytext,_("default")) )
333   {
334   if(ipar)
335   sprintf(Tpolar+strlen(Tpolar),",Step=%s",entrytext);
336   else
337   {
338   ipar=1;
339   sprintf(Tpolar+strlen(Tpolar),"(Step=%s",entrytext);
340   }
341   }
342   if(ipar)
343   strcat(Tpolar,") ");
344 }
345 /*****************************************************************************************/
create_polar_option(GtkWidget * Wins)346 static void create_polar_option (GtkWidget* Wins)
347 {
348   GtkWidget *fp;
349   GtkWidget *frame;
350   GtkWidget **entry;
351   GtkWidget *vboxall;
352   GtkWidget *vboxframe;
353   GtkWidget *hbox1;
354   GtkWidget *hbox2;
355   GtkWidget *button;
356   int nlist = 1;
357   gchar *list[4];
358   entry=g_malloc(2*sizeof(GtkWidget*));
359 
360   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
361   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
362   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
363   gtk_window_set_title(GTK_WINDOW(fp),_("Options for dipole polarizabilities"));
364   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
365   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
366   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
367 
368   add_child(Wins,fp,gtk_widget_destroy,_("  Dipole polar. "));
369   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
370 
371   vboxall = create_vbox(fp);
372   frame = gtk_frame_new (_("Dipole polarizabilities"));
373   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
374   gtk_container_add (GTK_CONTAINER (vboxall), frame);
375   gtk_widget_show (frame);
376 
377   vboxframe = create_vbox(frame);
378   nlist=4;
379   list[0]=g_strdup(_("default"));
380   list[1]=g_strdup("Analytic");
381   list[2]=g_strdup("Numerical");
382   list[3]=g_strdup("EnOnly");
383   hbox1 = create_hbox(vboxframe);
384   entry[0]= create_combo_box_entry_liste(fp,hbox1,_("Type of second derivatives  : "),list,nlist);
385   nlist=4;
386   list[0]=g_strdup(_("default"));
387   list[1]=g_strdup("1");
388   list[2]=g_strdup("10");
389   list[3]=g_strdup("100");
390   hbox1 = create_hbox(vboxframe);
391   entry[1]= create_combo_box_entry_liste(fp,hbox1,_("Step size in the electric field :"),list,nlist);
392 
393   hbox2 = create_hbox(vboxall);
394   gtk_widget_realize(fp);
395 
396   button = create_button(fp,_("Cancel"));
397   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
398   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
399   gtk_widget_show (button);
400 
401   button = create_button(fp,_("OK"));
402   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
403   gtk_widget_show (button);
404   g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(gene_polar),(gpointer)entry);
405   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
406 
407 
408   gtk_widget_show_all(fp);
409 }
410 /*****************************************************************************************/
gene_scf(GtkWidget * b,gpointer data)411 static void gene_scf(GtkWidget *b,gpointer data)
412 {
413   GtkWidget **entryall;
414   GtkWidget *entry;
415   G_CONST_RETURN gchar *entrytext;
416   guint ipar;
417   ipar=0;
418   if(Tscf == NULL ) Tscf=g_malloc(50*sizeof(gchar));
419   sprintf(Tscf," SCF");
420   entryall=(GtkWidget **)data;
421   entry=entryall[0];
422   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
423   if (strcmp(entrytext,_("default")) )
424   {
425   ipar=1;
426   sprintf(Tscf+strlen(Tscf),"(%s",entrytext);
427   }
428   entry=entryall[1];
429   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
430   if (strcmp(entrytext,_("default")) )
431   {
432   if(ipar)
433   sprintf(Tscf+strlen(Tscf),",Vshift=%s",entrytext);
434   else
435   {
436   ipar=1;
437   sprintf(Tscf+strlen(Tscf),"(Vshift=%s",entrytext);
438   }
439   }
440   entry=entryall[2];
441   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
442   if (strcmp(entrytext,_("default")) )
443   {
444   if(ipar)
445   sprintf(Tscf+strlen(Tscf),",MaxCycle=%s",entrytext);
446   else
447   {
448   ipar=1;
449   sprintf(Tscf+strlen(Tscf),"(MaxCycle=%s",entrytext);
450   }
451   }
452   entry=entryall[3];
453   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
454   if (strcmp(entrytext,_("default")) )
455   {
456   if(ipar)
457   sprintf(Tscf+strlen(Tscf),",MaxRot=%s",entrytext);
458   else
459   {
460   ipar=1;
461   sprintf(Tscf+strlen(Tscf),"(MaxRot=%s",entrytext);
462   }
463   }
464   entry=entryall[4];
465   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
466   if (strcmp(entrytext,_("default")) )
467   {
468   if(ipar)
469   sprintf(Tscf+strlen(Tscf),",Conver=%s",entrytext);
470   else
471   {
472   ipar=1;
473   sprintf(Tscf+strlen(Tscf),"(Conver=%s",entrytext);
474   }
475   }
476   if(ipar)
477   strcat(Tscf,") ");
478   else
479   {
480   	g_free(Tscf);
481         Tscf = (char *)NULL;
482   }
483 }
484 /*****************************************************************************************/
create_scf_option(GtkWidget * Wins)485 static void create_scf_option (GtkWidget* Wins)
486 {
487   GtkWidget *fp;
488   GtkWidget *frame;
489   GtkWidget **entry;
490   GtkWidget *vboxall;
491   GtkWidget *vboxframe;
492   GtkWidget *hbox1;
493   GtkWidget *hbox2;
494   GtkWidget *button;
495   int nlist = 1;
496   gchar *list[10];
497   entry=g_malloc(5*sizeof(GtkWidget*));
498 
499   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
500   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
501   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
502   gtk_window_set_title(GTK_WINDOW(fp),_("Controls of the SCF procedure"));
503   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
504   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
505   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
506 
507   add_child(Wins,fp,gtk_widget_destroy,_("  Dipole polar. "));
508   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
509 
510   vboxall = create_vbox(fp);
511   frame = gtk_frame_new (_("SCF procedure"));
512   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
513   gtk_container_add (GTK_CONTAINER (vboxall), frame);
514   gtk_widget_show (frame);
515 
516   vboxframe = create_vbox(frame);
517   hbox1 = create_hbox(vboxframe);
518   list[0]=g_strdup("");
519   nlist=9;
520   list[0]=g_strdup(_("default"));
521   list[1]=g_strdup("Direct");
522   list[2]=g_strdup("InCore");
523   list[3]=g_strdup("QC");
524   list[4]=g_strdup("DIIS");
525   list[5]=g_strdup("SD");
526   list[6]=g_strdup("SSD");
527   list[7]=g_strdup("DM");
528   list[8]=g_strdup("Conventional");
529   entry[0]= create_combo_box_entry_liste(fp,hbox1,_("Algorithm  : "),list,nlist);
530   nlist=3;
531   list[0]=g_strdup(_("default"));
532   list[1]=g_strdup("100");
533   list[2]=g_strdup("200");
534   hbox1 = create_hbox(vboxframe);
535   entry[1]= create_combo_box_entry_liste(fp,hbox1,_("Shift orbital energies : "),list,nlist);
536   nlist=3;
537   list[0]=g_strdup(_("default"));
538   list[1]=g_strdup("64");
539   list[2]=g_strdup("512");
540   hbox1 = create_hbox(vboxframe);
541   entry[2]= create_combo_box_entry_liste(fp,hbox1,_("Maximum number of SCF cycles : "),list,nlist);
542   nlist=4;
543   list[0]=g_strdup(_("default"));
544   list[1]=g_strdup("2");
545   list[2]=g_strdup("3");
546   list[3]=g_strdup("4");
547   hbox1 = create_hbox(vboxframe);
548   entry[3]= create_combo_box_entry_liste(fp,hbox1,_("Maximum rotation gradient :"),list,nlist);
549   nlist=5;
550   list[0]=g_strdup(_("default"));
551   list[1]=g_strdup("6");
552   list[2]=g_strdup("7");
553   list[3]=g_strdup("8");
554   list[4]=g_strdup("9");
555   hbox1 = create_hbox(vboxframe);
556   entry[4]= create_combo_box_entry_liste(fp,hbox1,_("Convergence criterion :"),list,nlist);
557 
558   hbox2 = create_hbox(vboxall);
559   gtk_widget_realize(fp);
560 
561   button = create_button(fp,_("Cancel"));
562   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
563   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
564   gtk_widget_show (button);
565 
566   button = create_button(fp,_("OK"));
567   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
568   gtk_widget_show (button);
569   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_scf),(gpointer)entry);
570   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
571 
572 
573 
574   gtk_widget_show_all(fp);
575 }
576 /*****************************************************************************************/
freq_activate(GtkWidget * button,gpointer data)577 static void freq_activate(GtkWidget *button,gpointer data)
578 {
579   	GtkWidget* buttonOptions =(GtkWidget*)data;
580 	if (GTK_TOGGLE_BUTTON (button)->active)
581 	{
582   		if(Tfreq == NULL ) Tfreq=g_malloc(50*sizeof(gchar));
583   		sprintf(Tfreq," freq");
584 		if(GTK_IS_WIDGET(buttonOptions)) gtk_widget_set_sensitive(buttonOptions,TRUE);
585 	}
586 	else
587 	{
588   		if(Tfreq) g_free(Tfreq);
589   		Tfreq = NULL;
590 		if(GTK_IS_WIDGET(buttonOptions)) gtk_widget_set_sensitive(buttonOptions,FALSE);
591 	}
592 }
593 /*****************************************************************************************/
gene_freq(GtkWidget * b,gpointer data)594 static void gene_freq(GtkWidget *b,gpointer data)
595 {
596   GtkWidget **entryall;
597   GtkWidget *entry;
598   G_CONST_RETURN gchar *entrytext;
599   guint ipar;
600   ipar=0;
601   if(Tfreq == NULL ) Tfreq=g_malloc(50*sizeof(gchar));
602   sprintf(Tfreq," freq");
603   entryall=(GtkWidget **)data;
604   entry=entryall[0];
605   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
606   if (!strcmp(entrytext,_("Yes")) )
607   {
608   ipar=1;
609   strcat(Tfreq,"(VCD");
610   }
611   entry=entryall[1];
612   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
613   if (!strcmp(entrytext,_("Yes")) )
614   {
615   if(ipar)
616   strcat(Tfreq,",Raman");
617   else
618   {
619   ipar=1;
620   strcat(Tfreq,"(Raman");
621   }
622   }
623   entry=entryall[2];
624   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
625   if (strcmp(entrytext,_("default")) )
626   {
627   if(ipar)
628   sprintf(Tfreq+strlen(Tfreq),",%s",entrytext);
629   else
630   {
631   ipar=1;
632   sprintf(Tfreq+strlen(Tfreq),"(%s",entrytext);
633   }
634   }
635   entry=entryall[3];
636   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
637   if (strcmp(entrytext,_("default")) )
638   {
639   if(ipar)
640   sprintf(Tfreq+strlen(Tfreq),",Step=%s",entrytext);
641   else
642   {
643   ipar=1;
644   sprintf(Tfreq+strlen(Tfreq),"(Step=%s",entrytext);
645   }
646   }
647   if(ipar)
648   strcat(Tfreq,") ");
649 }
650 /*****************************************************************************************/
create_freq_option(GtkWidget * Wins)651 static void create_freq_option ( GtkWidget *Wins)
652 {
653   GtkWidget *fp;
654   GtkWidget *frame;
655   GtkWidget **entry;
656   GtkWidget *vboxall;
657   GtkWidget *vboxframe;
658   GtkWidget *hbox1;
659   GtkWidget *hbox2;
660   GtkWidget *button;
661   int nlist = 1;
662   gchar *list[4];
663   entry=g_malloc(4*sizeof(GtkWidget*));
664 
665   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
666   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
667   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
668   gtk_window_set_title(GTK_WINDOW(fp),_("Compute frequencies"));
669   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
670 
671   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
672   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
673 
674   add_child(Wins,fp,gtk_widget_destroy,_(" Constants force "));
675   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
676 
677   vboxall = create_vbox(fp);
678   frame = gtk_frame_new (_("Force constants"));
679   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
680   gtk_container_add (GTK_CONTAINER (vboxall), frame);
681   gtk_widget_show (frame);
682 
683   vboxframe = create_vbox(frame);
684   hbox1 = create_hbox(vboxframe);
685   list[0]=g_strdup("");
686   nlist=2;
687   list[0]=g_strdup(_("No"));
688   list[1]=g_strdup(_("Yes"));
689   entry[0]= create_combo_box_entry_liste(fp,hbox1,_("Compute the vibrational circular dichroism ? : "),list,nlist);
690   nlist=2;
691   list[0]=g_strdup(_("No"));
692   list[1]=g_strdup(_("Yes"));
693   hbox1 = create_hbox(vboxframe);
694   entry[1]= create_combo_box_entry_liste(fp,hbox1,_("Compute Raman intensities ? : "),list,nlist);
695   nlist=4;
696   list[0]=g_strdup(_("default"));
697   list[1]=g_strdup("Analytic");
698   list[2]=g_strdup("Numerical");
699   list[3]=g_strdup("EnOnly");
700   hbox1 = create_hbox(vboxframe);
701   entry[2]= create_combo_box_entry_liste(fp,hbox1,_("Type of second derivatives  : "),list,nlist);
702   nlist=4;
703   list[0]=g_strdup(_("default"));
704   list[1]=g_strdup("1");
705   list[2]=g_strdup("10");
706   list[3]=g_strdup("100");
707   hbox1 = create_hbox(vboxframe);
708   entry[3]= create_combo_box_entry_liste(fp,hbox1,_("Step-size for numerical differentiation :"),list,nlist);
709 
710   hbox2 = create_hbox(vboxall);
711   gtk_widget_realize(fp);
712 
713   button = create_button(fp,_("Cancel"));
714   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
715   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
716   gtk_widget_show (button);
717 
718   button = create_button(fp,_("OK"));
719   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
720   gtk_widget_show (button);
721   g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(gene_freq),(gpointer)entry);
722   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
723 
724 
725   gtk_widget_show_all(fp);
726 }
727 /*****************************************************************************************/
traite_button_general(GtkWidget * button,gpointer data)728 void traite_button_general (GtkWidget *button, gpointer data)
729 {
730  GtkWidget *Wins = GTK_WIDGET(g_object_get_data (G_OBJECT (button), "Window"));
731  if (!strcmp((char *)data,_("Compute frequencies")) ) create_freq_option(Wins);
732   else
733  if (!strcmp((char *)data,_("    Controls the SCF procedure" )) ) create_scf_option(Wins);
734   else
735  if (!strcmp((char *)data,_("Compute the dipole polarizabilities" )) ) create_polar_option(Wins);
736 }
737 /*****************************************************************************************/
connect_button(GtkWidget * Wins,GtkWidget * button,gchar * t)738 void connect_button(GtkWidget *Wins,GtkWidget *button,gchar *t)
739 {
740   g_object_set_data(G_OBJECT (button), "Window", Wins);
741   g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(traite_button_general),(gpointer)t);
742 }
743 /*****************************************************************************************/
create_liste_general(GtkWidget * Wins,GtkWidget * win,GtkWidget * frame)744 void create_liste_general(GtkWidget*Wins,GtkWidget*win,GtkWidget *frame)
745 {
746   GtkWidget *vbox;
747   GtkWidget *hbox;
748   GtkWidget *hseparator;
749   GtkWidget *checkbutton;
750   gchar *t;
751   GtkWidget *table;
752   gint i;
753   gint j;
754 
755   vbox =create_vbox(frame);
756   hseparator = create_hseparator(vbox);
757 
758   table = gtk_table_new(8,2,FALSE);
759   gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
760   /* polarisability */
761   {
762   	GtkWidget *buttonCheck;
763   	GtkWidget *buttonOption;
764 
765 	i = 0;
766   	t=g_strdup(_("Compute the dipole polarizabilities"));
767   	buttonCheck = gtk_check_button_new_with_label (t);
768 	j = 0;
769 	gtk_table_attach(GTK_TABLE(table),buttonCheck,j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
770   	gtk_widget_show (buttonCheck);
771 
772   	buttonOption = gtk_button_new_with_label (_("Options"));
773 	j = 1;
774 	gtk_table_attach(GTK_TABLE(table),buttonOption,j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
775   	gtk_widget_show (buttonOption);
776 	if(GTK_IS_WIDGET(buttonOption)) gtk_widget_set_sensitive(buttonOption,FALSE);
777   	connect_button(Wins,buttonOption,t);
778   	g_signal_connect(G_OBJECT(buttonCheck), "clicked",G_CALLBACK(polar_activate),(gpointer)buttonOption);
779 	hseparator = gtk_hseparator_new ();
780 
781 	i++;
782 	gtk_table_attach(GTK_TABLE(table),hseparator,0,0+2,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
783   }
784   /* force constants */
785   {
786   	GtkWidget *buttonCheck;
787   	GtkWidget *buttonOption;
788 
789 	i++;
790   	t=g_strdup(_("Compute frequencies"));
791   	buttonCheck = gtk_check_button_new_with_label (t);
792 	j = 0;
793 	gtk_table_attach(GTK_TABLE(table),buttonCheck,j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
794   	gtk_widget_show (buttonCheck);
795 
796   	buttonOption = gtk_button_new_with_label (_("Options"));
797 	j = 1;
798 	gtk_table_attach(GTK_TABLE(table),buttonOption,j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
799   	gtk_widget_show (buttonOption);
800 	if(GTK_IS_WIDGET(buttonOption)) gtk_widget_set_sensitive(buttonOption,FALSE);
801   	connect_button(Wins,buttonOption,t);
802   	g_signal_connect(G_OBJECT(buttonCheck), "clicked",G_CALLBACK(freq_activate),(gpointer)buttonOption);
803 	hseparator = gtk_hseparator_new ();
804 
805 	i++;
806 	gtk_table_attach(GTK_TABLE(table),hseparator,0,0+2,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
807   }
808   /* scf procedure */
809   {
810   	GtkWidget *label;
811   	GtkWidget *buttonOption;
812 	GtkWidget *hbox = gtk_hbox_new(0,FALSE);
813 
814 
815 	i++;
816   	t=g_strdup(_("    Controls the SCF procedure"));
817   	label = gtk_label_new (t);
818 	gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_LEFT);
819 	gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
820   	gtk_widget_show (label);
821   	gtk_widget_show (hbox);
822 	j = 0;
823 	gtk_table_attach(GTK_TABLE(table),hbox,j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_SHRINK) , (GtkAttachOptions)(GTK_FILL | GTK_SHRINK), 1,1);
824 
825   	buttonOption = gtk_button_new_with_label (_("Go"));
826 	j = 1;
827 	gtk_table_attach(GTK_TABLE(table),buttonOption,j,j+1,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
828   	gtk_widget_show (buttonOption);
829 	if(GTK_IS_WIDGET(buttonOption)) gtk_widget_set_sensitive(buttonOption,TRUE);
830   	connect_button(Wins,buttonOption,t);
831 	hseparator = gtk_hseparator_new ();
832 
833 	i++;
834 	gtk_table_attach(GTK_TABLE(table),hseparator,0,0+2,i,i+1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) , (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), 1,1);
835   }
836 
837   hbox =create_hbox(vbox);
838   checkbutton = gtk_check_button_new_with_label (_("Extra print keys for gabedit"));
839   CheckButtons[0]=checkbutton;
840   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);
841   gtk_widget_show (checkbutton);
842   gtk_box_pack_start (GTK_BOX (hbox), checkbutton, TRUE, TRUE, 0);
843 
844   checkbutton = gtk_check_button_new_with_label (_("Full population analysis"));
845   CheckButtons[1]=checkbutton;
846   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);
847   gtk_widget_show (checkbutton);
848   gtk_box_pack_start (GTK_BOX (hbox), checkbutton, TRUE, TRUE, 0);
849 
850   hbox =create_hbox(vbox);
851   checkbutton = gtk_check_button_new_with_label (_("Archive"));
852   CheckButtons[2]=checkbutton;
853   gtk_widget_show (checkbutton);
854   gtk_box_pack_start (GTK_BOX (hbox), checkbutton, TRUE, TRUE, 0);
855 
856   checkbutton = gtk_check_button_new_with_label (_("Ignore Symmetry"));
857   CheckButtons[3]=checkbutton;
858   gtk_widget_show (checkbutton);
859   gtk_box_pack_start (GTK_BOX (hbox), checkbutton, TRUE, TRUE, 0);
860 
861   hbox =create_hbox(vbox);
862   checkbutton = gtk_check_button_new_with_label (_("Addtional print"));
863   CheckButtons[4]=checkbutton;
864   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);
865   gtk_widget_show (checkbutton);
866   gtk_box_pack_start (GTK_BOX (hbox), checkbutton, TRUE, TRUE, 0);
867 
868   checkbutton = gtk_check_button_new_with_label (_("Density"));
869   CheckButtons[5]=checkbutton;
870   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);
871   gtk_widget_show (checkbutton);
872   gtk_box_pack_start (GTK_BOX (hbox), checkbutton, TRUE, TRUE, 0);
873 
874   checkbutton = gtk_check_button_new_with_label (_("Mix HOMO & LUMO in initial guess"));
875   CheckButtons[6]=checkbutton;
876   gtk_widget_show (checkbutton);
877   gtk_box_pack_start (GTK_BOX (vbox), checkbutton, FALSE, FALSE, 0);
878 
879   checkbutton = gtk_check_button_new_with_label (_("Read initial Guess from checkpoint"));
880   CheckButtons[7]=checkbutton;
881   gtk_widget_show (checkbutton);
882   gtk_box_pack_start (GTK_BOX (vbox), checkbutton, FALSE, FALSE, 0);
883 
884   checkbutton = gtk_check_button_new_with_label (_("Read geometry from checkpoint"));
885   CheckButtons[8]=checkbutton;
886   gtk_widget_show (checkbutton);
887   gtk_box_pack_start (GTK_BOX (vbox), checkbutton, FALSE, FALSE, 0);
888 
889   hseparator = create_hseparator(vbox);
890 
891 }
892 /*****************************************************************************************/
c_opt_combo()893 void  c_opt_combo()
894 {
895   gchar *liste[9];
896   int nliste = 0;
897   nliste=4;
898   liste[0]=g_strdup(_("default"));
899   liste[1]=g_strdup("Redundant");
900   liste[2]=g_strdup("Z-matrix");
901   liste[3]=g_strdup("Cartesian");
902   HboxT[0] = create_hbox(VboxT);
903   EntryTypes[0]= create_combo_box_entry_liste(FrameT,HboxT[0],_(" Coordinate system options :"),liste,nliste);
904   nliste=4;
905   liste[0]=g_strdup(_("default"));
906   liste[1]=g_strdup("Tight");
907   liste[2]=g_strdup("VeryTight");
908   liste[3]=g_strdup("Loose");
909   HboxT[1] = create_hbox(VboxT);
910   EntryTypes[1]= create_combo_box_entry_liste(FrameT,HboxT[1],_("  Convergence criteries :"),liste,nliste);
911   nliste=5;
912   liste[0]=g_strdup(_("default"));
913   liste[1]=g_strdup("20");
914   liste[2]=g_strdup("10");
915   liste[3]=g_strdup("30");
916   liste[4]=g_strdup("40");
917   HboxT[2] = create_hbox(VboxT);
918   EntryTypes[2]= create_combo_box_entry_liste(FrameT,HboxT[2],_(" MaxCycle  :"),liste,nliste);
919   nliste=4;
920   liste[0]=g_strdup(_("default"));
921   liste[1]=g_strdup("20");
922   liste[2]=g_strdup("30");
923   liste[3]=g_strdup("40");
924   HboxT[3] = create_hbox(VboxT);
925   EntryTypes[3]= create_combo_box_entry_liste(FrameT,HboxT[3],_(" StepSize  :"),liste,nliste);
926   nliste=4;
927   liste[0]=g_strdup(_("No"));
928   liste[1]=g_strdup("1");
929   liste[2]=g_strdup("2");
930   liste[3]=g_strdup("3");
931   HboxT[4] = create_hbox(VboxT);
932   EntryTypes[4]= create_combo_box_entry_liste(FrameT,HboxT[4],_("  Saddle point of order :"),liste,nliste);
933   nliste=2;
934   liste[0]=g_strdup(_("No"));
935   liste[1]=g_strdup(_("Yes"));
936   HboxT[5] = create_hbox(VboxT);
937   EntryTypes[5]= create_combo_box_entry_liste(FrameT,HboxT[5],_(" optimization  a transition  :"),liste,nliste);
938 }
939 /********************************************************************************************************/
traite_types(GtkComboBox * combobox,gpointer d)940 static void traite_types (GtkComboBox *combobox, gpointer d)
941 {
942 	guint i;
943 	GtkTreeIter iter;
944 	gchar* data = NULL;
945 	if (gtk_combo_box_get_active_iter (combobox, &iter))
946 	{
947 		GtkTreeModel* model = gtk_combo_box_get_model(combobox);
948 		gtk_tree_model_get (model, &iter, 0, &data, -1);
949 	}
950 	if(Types) g_free(Types);
951 	Types = NULL;
952 	if (data) Types = g_strdup(data);
953 
954 	for (i=0;i<nHboxT;i++)
955 	{
956 		if(HboxT[i]!=NULL)
957 		{
958 			gtk_widget_destroy(HboxT[i]);
959 			HboxT[i] = NULL;
960 		}
961 	}
962 	if (!strcmp((char *)data,_("Geometry Optimization")) ) c_opt_combo();
963 	gtk_widget_show_all(FrameT);
964 }
965 /********************************************************************************************************/
create_liste_types(GtkWidget * win,GtkWidget * frame)966 static GtkWidget *create_liste_types(GtkWidget*win,GtkWidget *frame)
967 {
968 	GtkWidget *hbox;
969 	GtkWidget *vbox;
970 	GtkWidget *hseparator;
971         GtkTreeIter iter;
972         GtkTreeStore *store;
973 	GtkTreeModel *model;
974 	GtkWidget *combobox;
975 	GtkCellRenderer *renderer;
976 
977 	vbox =create_vbox(frame);
978   	VboxT=vbox;
979 	hbox =create_hbox(vbox);
980 
981 	store = gtk_tree_store_new (1,G_TYPE_STRING);
982         gtk_tree_store_append (store, &iter, NULL);
983         gtk_tree_store_set (store, &iter, 0, _("Single Point"), -1);
984         gtk_tree_store_append (store, &iter, NULL);
985         gtk_tree_store_set (store, &iter, 0, _("Geometry Optimization"), -1);
986 
987         model = GTK_TREE_MODEL (store);
988 	combobox = gtk_combo_box_new_with_model (model);
989 	g_object_unref (model);
990 	gtk_box_pack_start (GTK_BOX (hbox), combobox, TRUE, TRUE, 1);
991 	g_signal_connect (G_OBJECT(combobox), "changed", G_CALLBACK(traite_types), NULL);
992 	renderer = gtk_cell_renderer_text_new ();
993 	gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE);
994 	gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 0, NULL);
995 
996 	hseparator = gtk_hseparator_new ();
997 	gtk_widget_show (hseparator);
998 	gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, FALSE, 1);
999 	gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1000 	return combobox;
1001 }
1002 /*****************************************************************************************/
create_add_keyword(GtkWidget * win,GtkWidget * vbox,gchar * tlabel)1003 GtkWidget *create_add_keyword (GtkWidget* win,GtkWidget *vbox,gchar *tlabel)
1004 {
1005   GtkWidget *label;
1006   GtkWidget *entry;
1007   GtkWidget *hbox;
1008 
1009   hbox = gtk_hbox_new (FALSE, 0);
1010   gtk_widget_show (hbox);
1011   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
1012 
1013   label = gtk_label_new (tlabel);
1014   gtk_widget_show (label);
1015   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1016 
1017   entry = gtk_entry_new ();
1018   gtk_widget_show (entry);
1019   gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
1020 
1021   return entry;
1022 }
1023 /*****************************************************************************************/
GAjoutePageRouteMain(GtkWidget * NoteBook,GtkWidget * Wins)1024 void GAjoutePageRouteMain(GtkWidget *NoteBook,GtkWidget *Wins)
1025 {
1026   GtkWidget *LabelOnglet;
1027   GtkWidget *LabelMenu;
1028   GtkWidget *window1;
1029   GtkWidget *vbox;
1030   GtkWidget *hbox;
1031   GtkWidget *FrameType;
1032   GtkWidget *FrameGeneral;
1033   GtkWidget *FrameMethodeBase;
1034   guint i;
1035 
1036   Tfreq=NULL;
1037   Tscf=NULL;
1038   Tpolar=NULL;
1039   Types=NULL;
1040   nHboxT=NHBOXT_MAX;
1041 
1042   for(i=0;i<6;i++)
1043         EntryChargeSpin[i] = NULL;
1044 
1045   for(i=0;i<nHboxT;i++)
1046   	HboxT[i]=NULL;
1047 
1048   window1 = gtk_frame_new(NULL);
1049 
1050   LabelOnglet = gtk_label_new(_("Main"));
1051   LabelMenu = gtk_label_new(_("Main"));
1052   gtk_notebook_append_page_menu(GTK_NOTEBOOK(NoteBook),
1053                                 window1,
1054                                 LabelOnglet, LabelMenu);
1055 
1056   g_object_set_data(G_OBJECT (window1), "window1", window1);
1057 
1058   vbox =create_vbox(window1);
1059 
1060   hbox =create_hbox(vbox);
1061   addChargeSpinFrame(hbox);
1062 
1063   hbox =create_hbox(vbox);
1064 
1065   FrameMethodeBase = create_frame(window1,hbox,_("METHOD"));
1066   create_notebook_MB( FrameMethodeBase);
1067 
1068   hbox =create_hbox(vbox);
1069 
1070   FrameType = create_frame(window1,hbox,_("TYPE"));
1071   FrameT=FrameType;
1072   create_liste_types(window1,FrameType);
1073   FrameGeneral = create_frame(window1,hbox,_("GENERAL"));
1074   create_liste_general(Wins,window1,FrameGeneral);
1075   gtk_widget_show_all(window1);
1076   gtk_widget_hide (CheckButtons[8]);
1077 }
1078 /*****************************************************************************************/
GAjoutePageRouteOptions(GtkWidget * NoteBook,GtkWidget * Wins)1079 void GAjoutePageRouteOptions(GtkWidget *NoteBook,GtkWidget *Wins)
1080 {
1081 	GtkWidget *Frame;
1082 	GtkWidget *LabelOnglet;
1083 	GtkWidget *LabelMenu;
1084 	GtkWidget *window1;
1085 	GtkWidget *vbox;
1086 	GtkWidget *hbox;
1087 	GtkWidget *FrameLink;
1088 	GtkWidget *FrameTitle;
1089 
1090 
1091 	Frame = gtk_frame_new(NULL);
1092 
1093 	LabelOnglet = gtk_label_new(_("Options"));
1094 	LabelMenu = gtk_label_new(_("Options"));
1095 	gtk_notebook_append_page_menu(GTK_NOTEBOOK(NoteBook), Frame, LabelOnglet, LabelMenu);
1096 
1097 	window1 = Frame;
1098 	g_object_set_data(G_OBJECT (window1), "window1", window1);
1099 
1100 	vbox =create_vbox(window1);
1101 
1102 	hbox =create_hbox(vbox);
1103 
1104 	FrameLink = create_frame(window1,hbox,_("LINK OPTIONS"));
1105 	create_button_link(FrameLink,Wins);
1106 
1107 	FrameTitle = create_frame(window1,hbox,_("Title"));
1108 	TextTitle = create_text(window1,FrameTitle,TRUE);
1109 	gabedit_text_insert (GABEDIT_TEXT (TextTitle), NULL, NULL, NULL, _("Input file generated by gabedit..."), -1);
1110 
1111 	gtk_widget_show_all(Frame);
1112 }
1113 
1114