1 /* MInterfaceComm.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/UtilsInterface.h"
28 #include "../Utils/GabeditTextEdit.h"
29 #include "../Geometry/GeomGlobal.h"
30 #include "MInterfaceComm.h"
31 
32 static GtkWidget *combo_entry1;
33 static GtkWidget *text1;
34 static GtkWidget *text2;
35 static  GtkWidget *Window;
36 static  GtkWidget *VboxOption;
37 static  GtkWidget *FrameShow;
38 static  GtkWidget *Wins;
39 static int begin = 1;
40 
41 /********************************************************************************************************/
gene_ref(GtkWidget * b,gpointer data)42 static void gene_ref(GtkWidget *b,gpointer data)
43 {
44   GtkWidget *entry;
45   G_CONST_RETURN gchar *entrytext;
46   entry=(GtkWidget *)data;
47   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "Ref",-1);
48   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
49   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
50   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
51   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
52 }
53 /********************************************************************************************************/
gene_nstate(GtkWidget * b,gpointer data)54 static void gene_nstate(GtkWidget *b,gpointer data)
55 {
56   GtkWidget *entry;
57   G_CONST_RETURN gchar *entrytext;
58   entry=(GtkWidget *)data;
59   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "State",-1);
60   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
61   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
62   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
63   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
64 }
65 /********************************************************************************************************/
gene_guess(GtkWidget * b,gpointer data)66 static void gene_guess(GtkWidget *b,gpointer data)
67 {
68   GtkWidget *entry;
69   G_CONST_RETURN gchar *entrytext;
70   entry=(GtkWidget *)data;
71   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "Start",-1);
72   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
73   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
74   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
75   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
76 }
77 /********************************************************************************************************/
gene_entry(GtkWidget * b,gpointer data)78 static void gene_entry(GtkWidget *b,gpointer data)
79 {
80   GtkWidget *entry;
81   G_CONST_RETURN gchar *entrytext;
82   entry=(GtkWidget *)data;
83   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
84   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
85   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
86 }
87 /********************************************************************************************************/
c_restrictexcitation(GtkWidget * bframe,guint del)88 static void c_restrictexcitation(GtkWidget *bframe,guint del)
89 {
90   GtkWidget *fp;
91   GtkWidget *frame;
92   GtkWidget *entry;
93   GtkWidget *vboxall;
94   GtkWidget *vboxframe;
95   GtkWidget *hbox1;
96   GtkWidget *hbox2;
97   GtkWidget *button;
98   gchar *liste[3];
99   gchar *titre=_("Restriction of classes of excitations");
100 
101   int nliste = 3;
102   liste[0]=g_strdup("NOPAIR");
103   liste[1]=g_strdup("NOSINGLE");
104   liste[2]=g_strdup("NOEXC");
105   /* Fenetre principale */
106   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
107   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
108   gtk_window_set_title(GTK_WINDOW(fp),titre);
109   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
110 
111   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
112   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
113   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
114 
115   add_child(Wins,fp,gtk_widget_destroy,titre);
116   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
117 
118 
119   vboxall = create_vbox(fp);
120   frame = gtk_frame_new (titre);
121   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
122   gtk_container_add (GTK_CONTAINER (vboxall), frame);
123   gtk_widget_show (frame);
124 
125   vboxframe = create_vbox(frame);
126   hbox1 = create_hbox(vboxframe);
127   entry= create_combo_box_entry_liste(Window,hbox1," Select : ",liste,nliste);
128 
129   hbox2 = create_hbox(vboxall);
130   gtk_widget_realize(Window);
131 
132   button = create_button(Window,_("Cancel"));
133   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
134   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
135   gtk_widget_show (button);
136 
137   button = create_button(Window,_("OK"));
138   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
139   gtk_widget_show (button);
140   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_entry),(gpointer)entry);
141   if(del) g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
142   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
143 
144 
145   gtk_widget_show_all(fp);
146 }
147 /********************************************************************************************************/
c_type_orb(GtkWidget * bframe,guint del)148 static void c_type_orb(GtkWidget *bframe,guint del)
149 {
150   GtkWidget *fp;
151   GtkWidget *frame;
152   GtkWidget *entry;
153   GtkWidget *vboxall;
154   GtkWidget *vboxframe;
155   GtkWidget *hbox1;
156   GtkWidget *hbox2;
157   GtkWidget *button;
158   gchar *liste[3];
159   int nliste = 3;
160   gchar *titre=_("Type of orbital to save");
161 
162   liste[0]=g_strdup("NatOrb");
163   liste[1]=g_strdup("CanOrb");
164   liste[2]=g_strdup("LocOrb");
165 
166   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
167   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
168   gtk_window_set_title(GTK_WINDOW(fp),titre);
169   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
170 
171   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
172   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
173   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
174 
175   add_child(Wins,fp,gtk_widget_destroy,titre);
176   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
177 
178 
179   vboxall = create_vbox(fp);
180   frame = gtk_frame_new (titre);
181   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
182   gtk_container_add (GTK_CONTAINER (vboxall), frame);
183   gtk_widget_show (frame);
184 
185   vboxframe = create_vbox(frame);
186   hbox1 = create_hbox(vboxframe);
187   entry= create_combo_box_entry_liste(Window,hbox1,_(" Type of robital :"),liste,nliste);
188 
189   hbox2 = create_hbox(vboxall);
190   gtk_widget_realize(Window);
191 
192   button = create_button(Window,_("Cancel"));
193   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
194   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
195   gtk_widget_show (button);
196 
197   button = create_button(Window,_("OK"));
198   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
199   gtk_widget_show (button);
200   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_entry),(gpointer)entry);
201   if(del) g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
202   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
203 
204 
205   gtk_widget_show_all(fp);
206 }
207 /********************************************************************************************************/
c_ref(GtkWidget * bframe,guint del)208 static void c_ref(GtkWidget *bframe,guint del)
209 {
210   GtkWidget *fp;
211   GtkWidget *frame;
212   GtkWidget *entry;
213   GtkWidget *vboxall;
214   GtkWidget *vboxframe;
215   GtkWidget *hbox1;
216   GtkWidget *hbox2;
217   GtkWidget *button;
218   gchar *liste[8];
219   int nliste = 8;
220   gchar *titre =_("Additional reference symmetries");
221   liste[0]=g_strdup("1");
222   liste[1]=g_strdup("2");
223   liste[2]=g_strdup("3");
224   liste[3]=g_strdup("4");
225   liste[4]=g_strdup("5");
226   liste[5]=g_strdup("6");
227   liste[6]=g_strdup("7");
228   liste[7]=g_strdup("8");
229   /* Fenetre principale */
230   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
231   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
232   gtk_window_set_title(GTK_WINDOW(fp),titre);
233   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
234 
235   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
236   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
237   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
238 
239   add_child(Wins,fp,gtk_widget_destroy,titre);
240   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
241 
242   vboxall = create_vbox(fp);
243   frame = gtk_frame_new (titre);
244   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
245   gtk_container_add (GTK_CONTAINER (vboxall), frame);
246   gtk_widget_show (frame);
247 
248   vboxframe = create_vbox(frame);
249   hbox1 = create_hbox(vboxframe);
250   entry= create_combo_box_entry_liste(Window,hbox1,_("Additional reference symmetries  :"),liste,nliste);
251 
252   hbox2 = create_hbox(vboxall);
253   gtk_widget_realize(Window);
254 
255   button = create_button(Window,_("Cancel"));
256   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
257   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
258   gtk_widget_show (button);
259 
260   button = create_button(Window,_("OK"));
261   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
262   gtk_widget_show (button);
263   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_ref),(gpointer)entry);
264   if(del) g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
265   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
266 
267 
268   gtk_widget_show_all(fp);
269 }
270 /********************************************************************************************************/
c_nstate(GtkWidget * bframe,guint del)271 static void c_nstate(GtkWidget *bframe,guint del)
272 {
273   GtkWidget *fp;
274   GtkWidget *frame;
275   GtkWidget *entry;
276   GtkWidget *vboxall;
277   GtkWidget *vboxframe;
278   GtkWidget *hbox1;
279   GtkWidget *hbox2;
280   GtkWidget *button;
281   gchar *liste[5];
282   int nliste = 5;
283   gchar *titre = _("Number of states");
284 
285 
286   liste[0]=g_strdup("1");
287   liste[1]=g_strdup("2");
288   liste[2]=g_strdup("3");
289   liste[3]=g_strdup("4");
290   liste[4]=g_strdup("5");
291   /* Fenetre principale */
292   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
293   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
294   gtk_window_set_title(GTK_WINDOW(fp),titre);
295   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
296 
297   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
298   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
299   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
300 
301   add_child(Wins,fp,gtk_widget_destroy,titre);
302   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
303 
304   vboxall = create_vbox(fp);
305   frame = gtk_frame_new (titre);
306   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
307   gtk_container_add (GTK_CONTAINER (vboxall), frame);
308   gtk_widget_show (frame);
309 
310   vboxframe = create_vbox(frame);
311   hbox1 = create_hbox(vboxframe);
312   entry= create_combo_box_entry_liste(Window,hbox1,_(" Number of states :"),liste,nliste);
313 
314   hbox2 = create_hbox(vboxall);
315   gtk_widget_realize(Window);
316 
317   button = create_button(Window,_("Cancel"));
318   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
319   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
320   gtk_widget_show (button);
321 
322   button = create_button(Window,_("OK"));
323   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
324   gtk_widget_show (button);
325   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_nstate),(gpointer)entry);
326   if(del) g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
327   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
328 
329 
330   gtk_widget_show_all(fp);
331 }
332 /********************************************************************************************************/
c_initial_guess(GtkWidget * bframe)333 static void c_initial_guess (GtkWidget *bframe)
334 {
335   GtkWidget *fp;
336   GtkWidget *frame;
337   GtkWidget *entry;
338   GtkWidget *vboxall;
339   GtkWidget *vboxframe;
340   GtkWidget *hbox1;
341   GtkWidget *hbox2;
342   GtkWidget *button;
343   gchar *liste[2];
344   gchar *titre =_("Initial orbital guess");
345 
346   int nliste = 2;
347   liste[0]=g_strdup("H0");
348   liste[1]=g_strdup("ATDEN");
349 
350   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
351   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
352   gtk_window_set_title(GTK_WINDOW(fp),titre);
353   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
354 
355   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
356   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
357   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
358 
359   add_child(Wins,fp,gtk_widget_destroy,titre);
360   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
361 
362   vboxall = create_vbox(fp);
363   frame = gtk_frame_new (titre);
364   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
365   gtk_container_add (GTK_CONTAINER (vboxall), frame);
366   gtk_widget_show (frame);
367 
368   vboxframe = create_vbox(frame);
369   hbox1 = create_hbox(vboxframe);
370   entry= create_combo_box_entry_liste(Window,hbox1,_(" The type of the initial orbital guess :"),liste,nliste);
371 
372   hbox2 = create_hbox(vboxall);
373   gtk_widget_realize(Window);
374 
375   button = create_button(Window,_("Cancel"));
376   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
377   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
378   gtk_widget_show (button);
379 
380   button = create_button(Window,_("OK"));
381   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
382   gtk_widget_show (button);
383   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_guess),(gpointer)entry);
384   g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
385   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
386 
387 
388   gtk_widget_show_all(fp);
389 }
390 /********************************************************************************************************/
gene_S_orb_mode(GtkWidget * b,gpointer data)391 static void gene_S_orb_mode(GtkWidget *b,gpointer data)
392 {
393   if (!strcmp((char *)data,"DENSITY") )
394   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "Start,DENSITY=",-1);
395   else
396   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, (char*)data,-1);
397   if (strcmp((char *)data,"DENSITY") )
398   	gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
399 }
400 /********************************************************************************************************/
gene_S_orb_num(GtkWidget * b,gpointer data)401 static void gene_S_orb_num(GtkWidget *b,gpointer data)
402 {
403   GtkWidget **entryall;
404   GtkWidget *entry;
405   G_CONST_RETURN gchar *entrytext;
406   entryall=(GtkWidget **)data;
407   entry=entryall[1];
408   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
409   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
410   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ".",-1);
411 
412   entry=entryall[0];
413   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
414   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
415   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
416 }
417 /********************************************************************************************************/
gene_orb_mode(GtkWidget * b,gpointer data)418 static void gene_orb_mode(GtkWidget *b,gpointer data)
419 {
420   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, (char*)data,-1);
421 }
422 /********************************************************************************************************/
gene_orb_num(GtkWidget * b,gpointer data)423 static void gene_orb_num(GtkWidget *b,gpointer data)
424 {
425   GtkWidget **entryall;
426   GtkWidget *entry;
427   G_CONST_RETURN gchar *entrytext;
428   guint i;
429   entryall=(GtkWidget **)data;
430   for (i=0;i<8;i++)
431   {
432   entry=entryall[i];
433   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
434   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
435   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
436   }
437   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
438 }
439 /********************************************************************************************************/
gene_one_entry2(GtkWidget * b,gpointer data)440 static void gene_one_entry2(GtkWidget *b,gpointer data)
441 {
442   GtkWidget *entry;
443   G_CONST_RETURN gchar *entrytext;
444   entry=(GtkWidget *)data;
445   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
446   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
447   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
448 }
449 /********************************************************************************************************/
gene_one_entry1(GtkWidget * b,gpointer data)450 static void gene_one_entry1(GtkWidget *b,gpointer data)
451 {
452   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, (char*)data,-1);
453   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
454 }
455 /********************************************************************************************************/
c_one_entry(GtkWidget * bframe,gchar * titre,gchar * mode,gchar * set,guint del)456 static void c_one_entry (GtkWidget *bframe,gchar *titre,gchar *mode,gchar *set,guint del)
457 {
458   GtkWidget *fp;
459   GtkWidget *frame;
460   GtkWidget *vboxall;
461   GtkWidget *vboxframe;
462   GtkWidget *hbox1;
463   GtkWidget *hbox2;
464   GtkWidget *button;
465   GtkWidget *label;
466   GtkWidget *entry;
467 
468   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
469   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
470   gtk_window_set_title(GTK_WINDOW(fp),titre);
471   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
472 
473   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
474   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
475   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
476 
477   add_child(Wins,fp,gtk_widget_destroy,titre);
478   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
479 
480   vboxall = create_vbox(fp);
481   frame = gtk_frame_new (titre);
482   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
483   gtk_container_add (GTK_CONTAINER (vboxall), frame);
484   gtk_widget_show (frame);
485 
486   vboxframe = create_vbox(frame);
487    hbox1 = create_hbox(vboxframe);
488   label = gtk_label_new (titre);
489   gtk_widget_show (label);
490   gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, FALSE, 0);
491 
492   entry = gtk_entry_new ();
493   gtk_widget_show (entry);
494   gtk_box_pack_start (GTK_BOX (hbox1), entry, FALSE, TRUE, 0);
495   gtk_entry_set_text(GTK_ENTRY(entry),set);
496 
497   hbox2 = create_hbox(vboxall);
498   gtk_widget_realize(Window);
499 
500   button = create_button(Window,_("Cancel"));
501   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
502   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
503   gtk_widget_show (button);
504 
505   button = create_button(Window,_("OK"));
506   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
507   gtk_widget_show (button);
508   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_one_entry1),(gpointer)mode);
509   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_one_entry2),(gpointer)entry);
510   if(del) g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
511   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
512 
513 
514   gtk_widget_show_all(fp);
515 }
516 /********************************************************************************************************/
c_SS_orb(GtkWidget * bframe,gchar * titre,gchar * mode)517 static void c_SS_orb (GtkWidget *bframe,gchar *titre,gchar *mode)
518 {
519   GtkWidget *fp;
520   GtkWidget *frame;
521   GtkWidget *vboxall;
522   GtkWidget *vboxframe;
523   GtkWidget *hbox1;
524   GtkWidget *hbox2;
525   GtkWidget *button;
526   GtkWidget *label;
527   GtkWidget **entry;
528   gchar      *labelt[2];
529   guint i;
530   entry=g_malloc(2*sizeof(GtkWidget *));
531   for (i=0;i<2;i++)
532         labelt[i]=g_malloc(100);
533   sprintf(labelt[0],_("File number : "));
534   sprintf(labelt[1],_("Record number: "));
535   /* Fenetre principale */
536   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
537   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
538   gtk_window_set_title(GTK_WINDOW(fp),titre);
539   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
540 
541   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
542   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
543   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
544 
545   add_child(Wins,fp,gtk_widget_destroy,titre);
546   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
547 
548 
549   vboxall = create_vbox(fp);
550   frame = gtk_frame_new (titre);
551   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
552   gtk_container_add (GTK_CONTAINER (vboxall), frame);
553   gtk_widget_show (frame);
554 
555   vboxframe = create_vbox(frame);
556   for (i=0;i<2;i++)
557   {
558     hbox1 = create_hbox(vboxframe);
559   label = gtk_label_new (labelt[i]);
560   gtk_widget_show (label);
561   gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, FALSE, 0);
562 
563   entry[i] = gtk_entry_new ();
564   gtk_widget_show (entry[i]);
565   gtk_box_pack_start (GTK_BOX (hbox1), entry[i], FALSE, TRUE, 0);
566   }
567 
568   hbox2 = create_hbox(vboxall);
569   gtk_widget_realize(fp);
570 
571   button = create_button(fp,_("Cancel"));
572   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
573   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
574   gtk_widget_show (button);
575 
576   button = create_button(fp,_("OK"));
577   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
578   gtk_widget_show (button);
579   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_S_orb_mode),(gpointer)mode);
580   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_S_orb_num),(gpointer)entry);
581   g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
582   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
583 
584 
585   for (i=1;i<2;i++)
586         g_free(labelt[i]);
587 
588   gtk_widget_show_all(fp);
589 }
590 /********************************************************************************************************/
c_orb(GtkWidget * bframe,gchar * titre,gchar * mode)591 static void c_orb (GtkWidget *bframe,gchar *titre,gchar *mode)
592 {
593   GtkWidget *fp;
594   GtkWidget *frame;
595   GtkWidget *vboxall;
596   GtkWidget *vboxframe;
597   GtkWidget *hbox1;
598   GtkWidget *hbox2;
599   GtkWidget *button;
600   GtkWidget *label;
601   GtkWidget **entry;
602   gchar      *Sym[8];
603   guint i;
604   entry=g_malloc(8*sizeof(GtkWidget *));
605   for (i=0;i<8;i++)
606   {
607         Sym[i]=g_malloc(100);
608   	sprintf(Sym[i],_("In symmetry number %d : "),i+1);
609   }
610   /* Fenetre principale */
611   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
612   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
613   gtk_window_set_title(GTK_WINDOW(fp),titre);
614   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
615 
616   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
617   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
618   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
619 
620   add_child(Wins,fp,gtk_widget_destroy,titre);
621   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
622 
623   vboxall = create_vbox(fp);
624   frame = gtk_frame_new (titre);
625   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
626   gtk_container_add (GTK_CONTAINER (vboxall), frame);
627   gtk_widget_show (frame);
628 
629   vboxframe = create_vbox(frame);
630   for (i=0;i<8;i++)
631   {
632     hbox1 = create_hbox(vboxframe);
633   label = gtk_label_new (Sym[i]);
634   gtk_widget_show (label);
635   gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, FALSE, 0);
636 
637   entry[i] = gtk_entry_new ();
638   gtk_widget_show (entry[i]);
639   gtk_box_pack_start (GTK_BOX (hbox1), entry[i], FALSE, TRUE, 0);
640   }
641 
642   hbox2 = create_hbox(vboxall);
643   gtk_widget_realize(fp);
644 
645   button = create_button(fp,_("Cancel"));
646   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
647   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
648   gtk_widget_show (button);
649 
650   button = create_button(fp,_("OK"));
651   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
652   gtk_widget_show (button);
653   g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(gene_orb_mode),(gpointer)mode);
654   g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(gene_orb_num),(gpointer)entry);
655   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
656   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
657 
658 
659   for (i=1;i<8;i++) g_free(Sym[i]);
660 
661   gtk_widget_show_all(fp);
662 }
663 /********************************************************************************************************/
gene_wf(GtkWidget * b,gpointer data)664 static void gene_wf(GtkWidget *b,gpointer data)
665 {
666   GtkWidget **entryall;
667   GtkWidget *entry;
668   G_CONST_RETURN gchar *entrytext;
669   guint i;
670   entryall=(GtkWidget **)data;
671   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "wf",-1);
672   for (i=0;i<3;i++)
673   {
674   entry=entryall[i];
675   entrytext = gtk_entry_get_text(GTK_ENTRY(entry));
676   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ",",-1);
677   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, entrytext,-1);
678   }
679   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
680 }
681 /********************************************************************************************************/
cw_wave(GtkWidget * bframe,guint del)682 static void cw_wave (GtkWidget *bframe,guint del)
683 {
684   GtkWidget *fp;
685   GtkWidget *frame;
686   GtkWidget **entry;
687   GtkWidget *vboxall;
688   GtkWidget *vboxframe;
689   GtkWidget *hbox1;
690   GtkWidget *hbox2;
691   GtkWidget *button;
692   gchar *listene[1];
693   int nlistene = 1;
694   gchar *listespin[7];
695   int nlistespin = 7;
696   gchar *listeirre[8];
697   int nlisteiree = 8;
698   gchar *titre=_("Wave function symmetry");
699 
700   entry=g_malloc(3*sizeof(GtkWidget*));
701   listene[0]=g_strdup_printf("%d",Nelectrons);
702 
703 
704   if(Nelectrons%2 == 0 && SpinMultiplicities[0]%2==0)
705   	listespin[0] = g_strdup_printf("%d",SpinMultiplicities[0]);
706   else if(Nelectrons%2 == 1 && SpinMultiplicities[0]%2==1)
707   	listespin[0] = g_strdup_printf("%d",SpinMultiplicities[0]);
708   else
709   {
710   	if(Nelectrons%2 == 0) listespin[0]=g_strdup("0");
711   	else listespin[0]=g_strdup("1");
712   }
713 
714   listespin[1]=g_strdup("0");
715   listespin[2]=g_strdup("1");
716   listespin[3]=g_strdup("2");
717   listespin[4]=g_strdup("3");
718   listespin[5]=g_strdup("4");
719   listespin[6]=g_strdup("5");
720 
721   listeirre[0]=g_strdup("1");
722   listeirre[1]=g_strdup("2");
723   listeirre[2]=g_strdup("3");
724   listeirre[3]=g_strdup("4");
725   listeirre[4]=g_strdup("5");
726   listeirre[5]=g_strdup("6");
727   listeirre[6]=g_strdup("7");
728   listeirre[7]=g_strdup("8");
729   /* Fenetre principale */
730   fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
731   gtk_window_set_modal(GTK_WINDOW(fp),TRUE);
732   gtk_window_set_title(GTK_WINDOW(fp),titre);
733   gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
734 
735   gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Wins));
736   gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
737   gtk_window_set_modal (GTK_WINDOW (fp), TRUE);
738 
739   add_child(Wins,fp,gtk_widget_destroy,titre);
740   g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)delete_child,NULL);
741 
742   vboxall = create_vbox(fp);
743   frame = gtk_frame_new (titre);
744   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
745   gtk_container_add (GTK_CONTAINER (vboxall), frame);
746   gtk_widget_show (frame);
747 
748   vboxframe = create_vbox(frame);
749   hbox1 = create_hbox(vboxframe);
750   entry[0]= create_combo_box_entry_liste(Window,hbox1,_("Number of electrons :"),listene,nlistene);
751   hbox1 = create_hbox(vboxframe);
752   entry[1]= create_combo_box_entry_liste(Window,hbox1,_("Number of the irreducible representation :"),listeirre,nlisteiree);
753   hbox1 = create_hbox(vboxframe);
754   entry[2]= create_combo_box_entry_liste(Window,hbox1,_("2*Spin :"),listespin,nlistespin);
755 
756   hbox2 = create_hbox(vboxall);
757   gtk_widget_realize(fp);
758 
759   button = create_button(fp,_("Cancel"));
760   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
761   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
762   gtk_widget_show (button);
763 
764   button = create_button(fp,_("OK"));
765   gtk_box_pack_start (GTK_BOX( hbox2), button, TRUE, TRUE, 3);
766   gtk_widget_show (button);
767   g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gene_wf),(gpointer)entry);
768   if(del) g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(gtk_widget_destroy),GTK_OBJECT(bframe));
769   g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(delete_child),GTK_OBJECT(fp));
770 
771 
772   gtk_widget_show_all(fp);
773 }
774 /********************************************************************************************************/
Traite_ci_Option(GtkWidget * bframe,gpointer data)775 static void Traite_ci_Option(GtkWidget *bframe,gpointer data)
776 {
777  char *temp;
778  temp=g_malloc(100);
779   if (!strcmp((char *)data,_("Defining the state symmetry")) )
780    cw_wave(bframe,1);
781   else
782   if (!strcmp((char *)data,_("Defining the occupied orbitals")) )
783    c_orb(bframe,_("Defining the occupied orbitals"),"Occ");
784   else
785   if (!strcmp((char *)data,_("Defining the closed-shell orbitals")) )
786    c_orb(bframe,_("Defining the closed-shell orbitals"),"Closed");
787   else
788   if (!strcmp((char *)data,_("Defining the Frozen-core orbitals")) )
789    c_orb(bframe,_("Defining the Frozen-core orbitals"),"Core");
790   else
791   if (!strcmp((char *)data,_("Saving the natural orbitals")) )
792    c_SS_orb(bframe,_("Saving the natural orbital"),"Natorb");
793   else
794   if (!strcmp((char *)data,_("Defining the number of states in the present symmetry")) )
795    c_nstate(bframe,1);
796   else
797   if (!strcmp((char *)data,_("Defining the orbitals")) )
798    c_SS_orb(bframe,_("Defining the orbitals"),"Orbit");
799   else
800   if (!strcmp((char *)data,_("Additional reference symmetries")) )
801      c_ref(bframe,0);
802   else
803   if (!strcmp((char *)data,_("Restriction of classes of excitations")) )
804   c_restrictexcitation(bframe,1);
805   else
806   {
807   sprintf(temp,_("Sorry, the button of \"%s\" is not active"),(char*)data);
808    Message(temp,_("Warning"),TRUE);
809    gtk_widget_hide(bframe);
810   }
811  g_free(temp);
812 }
813 /********************************************************************************************************/
Traite_multi_Option(GtkWidget * bframe,gpointer data)814 static void Traite_multi_Option(GtkWidget *bframe,gpointer data)
815 {
816  char *temp;
817  temp=g_malloc(100);
818   if (!strcmp((char *)data,_("Defining the state symmetry")) )
819    cw_wave(bframe,0);
820   else
821   if (!strcmp((char *)data,_("Defining the occupied orbitals")) )
822    c_orb(bframe,_("Defining the occupied orbitals"),"Occ");
823   else
824   if (!strcmp((char *)data,_("Defining the closed-shell orbitals")) )
825    c_orb(bframe,_("Defining the closed-shell orbitals"),"Closed");
826   else
827   if (!strcmp((char *)data,_("Defining the Frozen-core orbitals")) )
828    c_orb(bframe,_("Defining the Frozen-core orbitals"),"Core");
829   else
830   if (!strcmp((char *)data,_("Saving the final orbitals")) )
831    c_SS_orb(bframe,_("Saving the final orbital"),"Orbital");
832   else
833   if (!strcmp((char *)data,_("Defining the starting guess")) )
834    c_SS_orb(bframe,_("Defining the starting guess"),"Start");
835   else
836   if (!strcmp((char *)data,_("Defining the number of states in the present symmetry")) )
837    c_nstate(bframe,0);
838   else
839   if (!strcmp((char *)data,_("Specifying weights in state-averaged calculations")) )
840    c_one_entry(bframe,_("Specifying weights in state-averaged calculations "),"Weights","1,1,1,1",0);
841   else
842   if (!strcmp((char *)data,_("Type of orbitals to save")) )
843      c_type_orb(bframe,1);
844   else
845   {
846   sprintf(temp,_("Sorry, the button of \"%s\" is not active"),(char*)data);
847    Message(temp,_("Warning"),TRUE);
848    gtk_widget_hide(bframe);
849   }
850  g_free(temp);
851 }
Traite_hf_Option(GtkWidget * bframe,gpointer data)852 static void Traite_hf_Option(GtkWidget *bframe,gpointer data)
853 {
854  char *temp;
855  temp=g_malloc(100);
856   if (!strcmp((char *)data,_("Defining the wavefunction")) )
857    cw_wave(bframe,1);
858   else
859   if (!strcmp((char *)data,_("Specifying closed-shell orbitals")) )
860    c_orb(bframe,_("Specifying closed-shell orbitals"),"Closed");
861   else
862   if (!strcmp((char *)data,_("Defining the number of occupied orbitals in each symmetry")) )
863    c_orb(bframe,_("Defining the number of occupied orbitals in each symmetry"),"Occ");
864   else
865   if (!strcmp((char *)data,_("Saving the final orbital")) )
866    c_SS_orb(bframe,_("Saving the final orbital"),"Save");
867   else
868   if (!strcmp((char *)data,_("Starting with previous orbitals")) )
869    c_SS_orb(bframe,_("Starting with previous orbitals"),"Start");
870   else
871   if (!strcmp((char *)data,_("Starting with a previous density matrix")) )
872    c_SS_orb(bframe,_("Starting with a previous density matrix"),"DENSITY");
873   else
874   if (!strcmp((char *)data,_("Initial orbital guess")) )
875    c_initial_guess(bframe);
876   else
877   {
878   sprintf(temp,_("Sorry, the button of \"%s\" is not active"),(char*)data);
879    Message(temp,_("Warning"),TRUE);
880    gtk_widget_hide(bframe);
881   }
882  g_free(temp);
883 }
884 /********************************************************************************************************/
button_fcioption(GtkWidget * w)885 static void button_fcioption(GtkWidget *w)
886 {
887 	GtkWidget* Table;
888 	GtkWidget* button;
889 	guint i;
890 	guint j;
891         guint ColonneT=2;
892         guint LigneT=3;
893 	char *LabelButton[2][3]={
894         {_("Defining the orbitals"),
895          _("Defining the closed-shell orbitals"),
896          _("Defining the state symmetry"),
897         },
898         {_("Defining the occupied orbitals"),
899          _("Defining the Frozen-core orbitals"),
900          "00"
901          }
902 	};
903 
904   Table = gtk_table_new(LigneT,ColonneT,TRUE);
905   gtk_container_add(GTK_CONTAINER(w),Table);
906 
907   for ( i = 0;i<LigneT;i++)
908 	  for ( j = 0;j<ColonneT;j++)
909   {
910     if(strcmp(LabelButton[j][i],"00"))
911           {
912 	  button = gtk_button_new_with_label(LabelButton[j][i]);
913 
914           g_signal_connect(G_OBJECT(button), "clicked",
915                             (GCallback)Traite_ci_Option,(gpointer )LabelButton[j][i]);
916 
917 	  gtk_table_attach(GTK_TABLE(Table),button,j,j+1,i,i+1,
918 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
919 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
920 		  1,1);
921           gtk_widget_show (button);
922          }
923 
924   }
925   gtk_widget_show (Table);
926 
927 }
928 /********************************************************************************************************/
button_cioption(GtkWidget * w)929 static void button_cioption(GtkWidget *w)
930 {
931 	GtkWidget* Table;
932 	GtkWidget* button;
933 	guint i;
934 	guint j;
935         guint ColonneT=2;
936         guint LigneT=6;
937 	char *LabelButton[2][6]={
938         {_("Defining the occupied orbitals"),
939          _("Defining the closed-shell orbitals"),
940          _("Defining the state symmetry"),
941          _("Additional reference symmetries"),
942          "00",
943          "00"
944         },
945         {_("Defining the Frozen-core orbitals"),
946          _("Defining the orbitals"),
947          _("Defining the number of states in the present symmetry"),
948          _("Restriction of classes of excitations"),
949          _("Saving the natural orbitals"),
950          "00"
951          }
952 	};
953 
954   Table = gtk_table_new(LigneT,ColonneT,TRUE);
955   gtk_container_add(GTK_CONTAINER(w),Table);
956 
957   for ( i = 0;i<LigneT;i++)
958 	  for ( j = 0;j<ColonneT;j++)
959   {
960     if(strcmp(LabelButton[j][i],"00"))
961           {
962 	  button = gtk_button_new_with_label(LabelButton[j][i]);
963 
964           g_signal_connect(G_OBJECT(button), "clicked",
965                             (GCallback)Traite_ci_Option,(gpointer )LabelButton[j][i]);
966 
967 	  gtk_table_attach(GTK_TABLE(Table),button,j,j+1,i,i+1,
968 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
969 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
970 		  1,1);
971           gtk_widget_show (button);
972          }
973 
974   }
975   gtk_widget_show (Table);
976 
977 }
978 /********************************************************************************************************/
button_multioption(GtkWidget * w)979 static void button_multioption(GtkWidget *w)
980 {
981 	GtkWidget* Table;
982 	GtkWidget* button;
983 	guint i;
984 	guint j;
985         guint ColonneT=2;
986         guint LigneT=6;
987 	char *LabelButton[2][6]={
988         {_("Defining the occupied orbitals"),
989          _("Defining the closed-shell orbitals"),
990          _("Defining the state symmetry"),
991          "00",
992          _("Type of orbitals to save"),
993          "00"
994         },
995         {_("Defining the Frozen-core orbitals"),
996          _("Defining the starting guess"),
997          _("Defining the number of states in the present symmetry"),
998          _("Specifying weights in state-averaged calculations"),
999          _("Saving the final orbitals"),
1000          "00"
1001          }
1002 	};
1003 
1004   Table = gtk_table_new(LigneT,ColonneT,TRUE);
1005   gtk_container_add(GTK_CONTAINER(w),Table);
1006 
1007   for ( i = 0;i<LigneT;i++)
1008 	  for ( j = 0;j<ColonneT;j++)
1009   {
1010     if(strcmp(LabelButton[j][i],"00"))
1011           {
1012 	  button = gtk_button_new_with_label(LabelButton[j][i]);
1013 
1014           g_signal_connect(G_OBJECT(button), "clicked",
1015                             (GCallback)Traite_multi_Option,(gpointer )LabelButton[j][i]);
1016 
1017 	  gtk_table_attach(GTK_TABLE(Table),button,j,j+1,i,i+1,
1018 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
1019 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
1020 		  1,1);
1021           gtk_widget_show (button);
1022          }
1023 
1024   }
1025   gtk_widget_show (Table);
1026 
1027 }
1028 /********************************************************************************************************/
button_hfoption(GtkWidget * w)1029 static void button_hfoption(GtkWidget *w)
1030 {
1031 	GtkWidget* Table;
1032 	GtkWidget* button;
1033 	guint i;
1034 	guint j;
1035         guint ColonneT=2;
1036         guint LigneT=4;
1037 	char *LabelButton[2][4]={
1038                 {_("Defining the wavefunction"),
1039                  _("Specifying closed-shell orbitals"),
1040                  _("Starting with previous orbitals"),
1041                  _("Starting with a previous density matrix")},
1042                 {_("Defining the number of occupied orbitals in each symmetry"),
1043                  _("Saving the final orbital"),
1044                  _("Initial orbital guess"),
1045                  "00" }
1046 		};
1047 
1048   Table = gtk_table_new(LigneT,ColonneT,TRUE);
1049   gtk_container_add(GTK_CONTAINER(w),Table);
1050 
1051   for ( i = 0;i<LigneT;i++)
1052 	  for ( j = 0;j<ColonneT;j++)
1053   {
1054     if(strcmp(LabelButton[j][i],"00"))
1055           {
1056 	  button = gtk_button_new_with_label(LabelButton[j][i]);
1057 
1058           g_signal_connect(G_OBJECT(button), "clicked",
1059                             (GCallback)Traite_hf_Option,(gpointer )LabelButton[j][i]);
1060 
1061 	  gtk_table_attach(GTK_TABLE(Table),button,j,j+1,i,i+1,
1062 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
1063 		  (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
1064 		  1,1);
1065           gtk_widget_show (button);
1066          }
1067 
1068   }
1069   gtk_widget_show (Table);
1070 
1071 }
1072 /********************************************************************************************************/
create_frame_option(gchar * titre)1073 void create_frame_option (gchar *titre)
1074 {
1075   GtkWidget *frame;
1076 
1077   frame = gtk_frame_new (titre);
1078   gtk_widget_show (frame);
1079   gtk_box_pack_start (GTK_BOX (VboxOption), frame, TRUE, TRUE, 0);
1080   gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
1081  FrameShow=frame;
1082 }
1083 /********************************************************************************************************/
command_select(GtkComboBox * combobox,gpointer d)1084 static void command_select(GtkComboBox *combobox, gpointer d)
1085 {
1086 	GtkTreeIter iter;
1087 	gchar* data = NULL;
1088 	if (gtk_combo_box_get_active_iter (combobox, &iter))
1089 	{
1090 		GtkTreeModel* model = gtk_combo_box_get_model(combobox);
1091 		gtk_tree_model_get (model, &iter, 0, &data, -1);
1092 	}
1093 	if(FrameShow !=NULL) gtk_widget_destroy(FrameShow);
1094 	if (!strcmp((char *)data,"hf") ) { create_frame_option(_("HF Options")); button_hfoption(FrameShow); }
1095 	else if (!strcmp((char *)data,"uhf") ) { create_frame_option(_("UHF Options")); button_hfoption(FrameShow); }
1096 	else if (!strcmp((char *)data,"multi") ) { create_frame_option(_("Multi Options")); button_multioption(FrameShow); }
1097 	else if (!strcmp((char *)data,"ci") ) { create_frame_option(_("CI Options")); button_cioption(FrameShow); }
1098 	else if (!strcmp((char *)data,"fci") ) { create_frame_option(_("FCI Options")); button_fcioption(FrameShow); }
1099 
1100 	if (strcmp((char *)data,_("Please select the type of calculation")) )
1101 	{
1102 		if(!begin) gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "}\n",-1);
1103 		gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "{ ",-1);
1104 		gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, (char *)data,-1);
1105 		gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "; ",-1);
1106 		begin = 0;
1107 	}
1108 }
1109 /********************************************************************************************************/
CreateListeComm(GtkWidget * BoiteVP)1110 static GtkWidget *CreateListeComm(GtkWidget* BoiteVP)
1111 {
1112         GtkTreeIter iter;
1113         GtkTreeStore *store;
1114 	GtkTreeModel *model;
1115 	GtkWidget *combobox;
1116 	GtkCellRenderer *renderer;
1117 
1118 	GtkWidget *hbox1;
1119 	GtkWidget *window1;
1120 
1121 	window1 = Window;
1122 	hbox1 = gtk_hbox_new (FALSE, 0);
1123 	gtk_widget_show (hbox1);
1124 	gtk_box_pack_start (GTK_BOX (BoiteVP), hbox1, FALSE, TRUE, 10);
1125 
1126 	store = gtk_tree_store_new (1,G_TYPE_STRING);
1127         gtk_tree_store_append (store, &iter, NULL);
1128         gtk_tree_store_set (store, &iter, 0, _("Please select the type of calculation"), -1);
1129         gtk_tree_store_append (store, &iter, NULL);
1130         gtk_tree_store_set (store, &iter, 0, "hf", -1);
1131         gtk_tree_store_append (store, &iter, NULL);
1132         gtk_tree_store_set (store, &iter, 0, "multi", -1);
1133         gtk_tree_store_append (store, &iter, NULL);
1134         gtk_tree_store_set (store, &iter, 0, "ci", -1);
1135         gtk_tree_store_append (store, &iter, NULL);
1136         gtk_tree_store_set (store, &iter, 0, "fci", -1);
1137         gtk_tree_store_append (store, &iter, NULL);
1138         gtk_tree_store_set (store, &iter, 0, "cisd", -1);
1139         gtk_tree_store_append (store, &iter, NULL);
1140         gtk_tree_store_set (store, &iter, 0, "qci", -1);
1141         gtk_tree_store_append (store, &iter, NULL);
1142         gtk_tree_store_set (store, &iter, 0, "ccsd", -1);
1143         gtk_tree_store_append (store, &iter, NULL);
1144         gtk_tree_store_set (store, &iter, 0, "ccsd(t)", -1);
1145         gtk_tree_store_append (store, &iter, NULL);
1146         gtk_tree_store_set (store, &iter, 0, "rccsd", -1);
1147         gtk_tree_store_append (store, &iter, NULL);
1148         gtk_tree_store_set (store, &iter, 0, "rccsd(t)", -1);
1149         gtk_tree_store_append (store, &iter, NULL);
1150         gtk_tree_store_set (store, &iter, 0, "rccsd-t", -1);
1151         gtk_tree_store_append (store, &iter, NULL);
1152         gtk_tree_store_set (store, &iter, 0, "uccsd", -1);
1153         gtk_tree_store_append (store, &iter, NULL);
1154         gtk_tree_store_set (store, &iter, 0, "uccsd(t)", -1);
1155         gtk_tree_store_append (store, &iter, NULL);
1156         gtk_tree_store_set (store, &iter, 0, "uccsd-t", -1);
1157         gtk_tree_store_append (store, &iter, NULL);
1158         gtk_tree_store_set (store, &iter, 0, "ks", -1);
1159         gtk_tree_store_append (store, &iter, NULL);
1160         gtk_tree_store_set (store, &iter, 0, "uks", -1);
1161 
1162         model = GTK_TREE_MODEL (store);
1163 	combobox = gtk_combo_box_new_with_model (model);
1164 	g_object_unref (model);
1165 	gtk_box_pack_start (GTK_BOX (hbox1), combobox, TRUE, TRUE, 1);
1166 	g_signal_connect (G_OBJECT(combobox), "changed", G_CALLBACK(command_select), NULL);
1167 	renderer = gtk_cell_renderer_text_new ();
1168 	gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE);
1169 	gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 0, NULL);
1170 
1171 	return combobox;
1172 }
1173 /********************************************************************************************************/
AddToComm(GtkWidget * w)1174 void AddToComm(GtkWidget *w)
1175 {
1176   G_CONST_RETURN gchar *ModeEntry;
1177   gchar *Option;
1178 
1179   ModeEntry = gtk_entry_get_text(GTK_ENTRY(combo_entry1));
1180   Option=  gabedit_text_get_chars(text1, 0, -1);
1181   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ModeEntry,-1);
1182   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, ";",-1);
1183   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, Option,-1);
1184   gabedit_text_insert (GABEDIT_TEXT(text2), NULL, NULL, NULL, "\n",-1);
1185 
1186 }
1187 /********************************************************************************************************/
AjoutePageComm(GtkWidget * Win,GtkWidget * NoteBook,CommS * comm)1188 void AjoutePageComm(GtkWidget* Win,GtkWidget *NoteBook,CommS *comm)
1189 {
1190   GtkWidget *Frame;
1191   GtkWidget *LabelOnglet;
1192   GtkWidget *LabelMenu;
1193   GtkWidget *window1;
1194   GtkWidget *vbox1;
1195   GtkWidget *frame2;
1196   GtkWidget *scrolledwindow2;
1197   GtkWidget *combobox;
1198   Wins = Win;
1199 
1200   begin = 1;
1201 
1202   Frame = gtk_frame_new(NULL);
1203   gtk_widget_set_size_request(GTK_WIDGET(Frame), 600, 400);
1204   gtk_container_set_border_width(GTK_CONTAINER(Frame), 10);
1205 
1206   LabelOnglet = gtk_label_new(_("Commands"));
1207   LabelMenu = gtk_label_new(_("Commands"));
1208   gtk_notebook_append_page_menu(GTK_NOTEBOOK(NoteBook),Frame,LabelOnglet, LabelMenu);
1209 
1210   window1 = Frame;
1211   Window = window1;
1212   g_object_set_data (G_OBJECT (window1), "window1", window1);
1213 
1214   vbox1 =create_vbox(window1);
1215 
1216   VboxOption=vbox1 ;
1217   combobox = CreateListeComm(vbox1);
1218   FrameShow=NULL;
1219 
1220   frame2 = gtk_frame_new (_("View all commands generated by gabedit"));
1221   gtk_widget_show (frame2);
1222   gtk_box_pack_start (GTK_BOX (vbox1), frame2, TRUE, TRUE, 0);
1223   gtk_container_set_border_width (GTK_CONTAINER (frame2), 5);
1224 
1225   scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
1226   gtk_widget_show (scrolledwindow2);
1227   gtk_container_add (GTK_CONTAINER (frame2), scrolledwindow2);
1228   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1229 
1230   text2 = gabedit_text_new ();
1231   gtk_widget_show (text2);
1232   gtk_container_add (GTK_CONTAINER (scrolledwindow2), text2);
1233   gabedit_text_set_editable (GABEDIT_TEXT (text2), FALSE);
1234   comm->TextComm=text2;
1235   gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
1236 }
1237 
1238