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