1 /* ListeFiles.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 #include "../../Config.h"
21 #include <stdlib.h>
22 #include "../Common/Global.h"
23
24 #ifdef G_OS_WIN32
25 #include <winsock.h>
26 #else
27 #include <unistd.h>
28 #endif /* G_OS_WIN32 */
29
30
31 #include "../Utils/Utils.h"
32 #include "../Utils/UtilsInterface.h"
33 #include "../Utils/Constants.h"
34 #include "../Utils/GabeditTextEdit.h"
35 #include "../Geometry/GeomGlobal.h"
36 #include "../Geometry/GeomXYZ.h"
37 #include "../Geometry/ResultsAnalise.h"
38 #include "../Geometry/EnergiesCurves.h"
39 #include "../Common/Windows.h"
40 #include "../Geometry/GeomZmatrix.h"
41 #include "../Common/Run.h"
42 #include "../Common/Status.h"
43 #include "../Molcas/MolcasVariables.h"
44 #include "../Molcas/MolcasGateWay.h"
45 #include "../../pixmaps/DeMonMini.xpm"
46 #include "../../pixmaps/GamessMini.xpm"
47 #include "../../pixmaps/FireFlyMini.xpm"
48 #include "../../pixmaps/Gaussian.xpm"
49 #include "../../pixmaps/MolproMini.xpm"
50 #include "../../pixmaps/MolcasMini.xpm"
51 #include "../../pixmaps/MPQCMini.xpm"
52 #include "../../pixmaps/NWChemMini.xpm"
53 #include "../../pixmaps/PsicodeMini.xpm"
54 #include "../../pixmaps/OrcaMini.xpm"
55 #include "../../pixmaps/QChemMini.xpm"
56 #include "../../pixmaps/MopacMini.xpm"
57 #include "../../pixmaps/GabeditMini.xpm"
58 #include "../../pixmaps/Book_close.xpm"
59 #include "../../pixmaps/Page.xpm"
60
61 #include "../Common/StockIcons.h"
62 #include "../Files/ListeFiles.h"
63
64 static GdkPixbuf *demonPixbuf = NULL;
65 static GdkPixbuf *gamessPixbuf = NULL;
66 static GdkPixbuf *gaussianPixbuf = NULL;
67 static GdkPixbuf *molcasPixbuf = NULL;
68 static GdkPixbuf *molproPixbuf = NULL;
69 static GdkPixbuf *mpqcPixbuf = NULL;
70 static GdkPixbuf *fireflyPixbuf = NULL;
71 static GdkPixbuf *nwchemPixbuf = NULL;
72 static GdkPixbuf *psicodePixbuf = NULL;
73 static GdkPixbuf *orcaPixbuf = NULL;
74 static GdkPixbuf *qchemPixbuf = NULL;
75 static GdkPixbuf *mopacPixbuf = NULL;
76 static GdkPixbuf *gabeditPixbuf = NULL;
77 static GdkPixbuf *bookPixbuf = NULL;
78 static GdkPixbuf *pagePixbuf = NULL;
79
80 typedef enum
81 {
82 LIST_PIXBUF = 0,
83 LIST_NAME,
84 LIST_NODE_FOREGROUND_COLOR, /* this column is not visible */
85 LIST_DATA /* column for data, this column is not visible */
86 }ListColumnsTypes;
87
88
89 static DataTree** AllFiles=NULL;
90 static int Nfiles = 0;
91 static GtkWidget *checkbutton[NBNOD];
92 /*static GtkTooltips *GroupeHelp = NULL;*/
93 static gboolean popupshow = FALSE;
94
95 #define NL 3
96 static GtkWidget *LocalLabel[NL];
97 #define NR 3
98 static GtkWidget *RemoteLabel[NR];
99 static gchar selectedRow[100] = "-1";
100
101 /********************************************************************************/
102 static GtkTreeIter* CreeNoeud(GtkTreeView* , gchar *);
103 void CreeFeuille(GtkWidget *treeView, GtkTreeIter *parent,gchar* projectname,gchar*datafile,gchar* localdir,
104 gchar* remotehost,gchar* remoteuser,gchar* remotepass,gchar* remotedir,gint itype, gchar* command, GabEditNetWork netWorkProtocol);
105 static void AddFeuille(GtkTreeView *treeView, GtkTreeIter *parent, DataTree *pfd);
106 static void tree_data_destroy (DataTree* pfd);
107 static void create_window_list_to_clear();
108 static void clear_one_project();
109 static void create_set_dialogue_window();
110 static DataTree* tree_data_new (gchar *projectname,gchar* datafile,gchar* localdir,
111 gchar* remotehost,gchar* remoteuser,gchar* remotepass,gchar* remotedir,gint itype, gchar* command, GabEditNetWork netWorkProtocol);
112 static void create_remote_frame_popup(GtkWidget *hbox,DataTree* data);
113 static void create_local_frame_popup(GtkWidget *hbox,DataTree* data);
114 static void create_info_win();
115
116 /********************************************************************************/
set_pixbuf()117 static void set_pixbuf()
118 {
119 if(!demonPixbuf) demonPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) demon_mini_xpm);
120 if(!gamessPixbuf) gamessPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) gamess_mini_xpm);
121 if(!gaussianPixbuf) gaussianPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) gaussian_xpm);
122 if(!molcasPixbuf) molcasPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) molcas_mini_xpm);
123 if(!molproPixbuf) molproPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) molpro_mini_xpm);
124 if(!mpqcPixbuf) mpqcPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) mpqc_mini_xpm);
125 if(!nwchemPixbuf) nwchemPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) nwchem_mini_xpm);
126 if(!psicodePixbuf) psicodePixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) psicode_mini_xpm);
127 if(!orcaPixbuf) orcaPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) orca_mini_xpm);
128 if(!qchemPixbuf) qchemPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) qchem_mini_xpm);
129 if(!mopacPixbuf) mopacPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) mopac_mini_xpm);
130 if(!gabeditPixbuf) gabeditPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) gabedit_mini_xpm);
131 if(!fireflyPixbuf) fireflyPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) firefly_mini_xpm);
132 if(!bookPixbuf) bookPixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) book_close_xpm);
133 if(!pagePixbuf) pagePixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) page_xpm);
134 }
135 /********************************************************************************/
set_sensitive_option(GtkUIManager * manager,gchar * path,gboolean sensitive)136 static void set_sensitive_option(GtkUIManager *manager, gchar* path, gboolean sensitive)
137 {
138 GtkWidget *wid = gtk_ui_manager_get_widget (manager, path);
139 if(GTK_IS_WIDGET(wid)) gtk_widget_set_sensitive(wid, sensitive);
140 }
141 /**********************************************************************************/
show_menu_popup(GtkUIManager * manager,guint button,guint32 time)142 static gboolean show_menu_popup(GtkUIManager *manager, guint button, guint32 time)
143 {
144 GtkWidget *menu = gtk_ui_manager_get_widget (manager, "/MenuRecentProjects");
145 if (GTK_IS_MENU (menu))
146 {
147 gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, time);
148 return TRUE;
149 }
150 return FALSE;
151 }
152 /*********************************************************************************************************************/
activate_action(GtkAction * action)153 static void activate_action (GtkAction *action)
154 {
155 const gchar *name = gtk_action_get_name (action);
156 if(!strcmp(name, "Info")) create_info_win();
157 else if(!strcmp(name, "Cut")) clear_one_project();
158 else if(!strcmp(name, "Set")) create_set_dialogue_window();
159 else if(!strcmp(name, "ClearNodes")) create_window_list_to_clear();
160 else if(!strcmp(name, "Save")) parse_liste_files();
161 }
162 /*--------------------------------------------------------------------*/
163 static GtkActionEntry gtkActionEntries[] =
164 {
165 {"Info", GABEDIT_STOCK_INFO, N_("_Info"), NULL, "Info", G_CALLBACK (activate_action) },
166 {"Cut", GABEDIT_STOCK_CUT, N_("_Cut"), NULL, "Cut", G_CALLBACK (activate_action) },
167 {"Set", NULL, "_Set", NULL, N_("Set"), G_CALLBACK (activate_action) },
168 {"ClearNodes", NULL, N_("Clear _nodes"), NULL, "Clear nodes", G_CALLBACK (activate_action) },
169 {"Save", GABEDIT_STOCK_SAVE, N_("_Save list of projects"), NULL, "Save list of projects", G_CALLBACK (activate_action) },
170 };
171 static guint numberOfGtkActionEntries = G_N_ELEMENTS (gtkActionEntries);
172 /********************************************************************************/
173 /* XML description of the menus for the test app. The parser understands
174 * a subset of the Bonobo UI XML format, and uses GMarkup for parsing */
175 static const gchar *uiMenuInfo =
176 " <popup name=\"MenuRecentProjects\">\n"
177 " <separator name=\"sepMenuPopNew\" />\n"
178 " <menuitem name=\"Info\" action=\"Info\" />\n"
179 " <menuitem name=\"Cut\" action=\"Cut\" />\n"
180 " <menuitem name=\"Set\" action=\"Set\" />\n"
181 " <separator name=\"sepMenuPopNodes\" />\n"
182 " <menuitem name=\"ClearNodes\" action=\"ClearNodes\" />\n"
183 " <separator name=\"sepMenuPopSave\" />\n"
184 " <menuitem name=\"Save\" action=\"Save\" />\n"
185 " </popup>\n"
186 ;
187 /*******************************************************************************************************************************/
create_menu(GtkWidget * win)188 static GtkUIManager *create_menu(GtkWidget* win)
189 {
190 GtkActionGroup *actionGroup = NULL;
191 GtkUIManager *manager = NULL;
192 GError *error = NULL;
193
194 manager = gtk_ui_manager_new ();
195 g_signal_connect_swapped (win, "destroy", G_CALLBACK (g_object_unref), manager);
196
197 actionGroup = gtk_action_group_new ("GabeditListOfProject");
198 gtk_action_group_set_translation_domain(actionGroup,GETTEXT_PACKAGE);
199 gtk_action_group_add_actions (actionGroup, gtkActionEntries, numberOfGtkActionEntries, NULL);
200
201 gtk_ui_manager_insert_action_group (manager, actionGroup, 0);
202
203 gtk_window_add_accel_group (GTK_WINDOW (win), gtk_ui_manager_get_accel_group (manager));
204 if (!gtk_ui_manager_add_ui_from_string (manager, uiMenuInfo, -1, &error))
205 {
206 g_message ("building menus failed: %s", error->message);
207 g_error_free (error);
208 }
209 return manager;
210 }
211 /********************************************************************************/
set_fileopen(DataTree * data)212 static void set_fileopen(DataTree* data)
213 {
214 if(fileopen.projectname) g_free(fileopen.projectname);
215 if(fileopen.localdir) g_free(fileopen.localdir);
216 if(fileopen.datafile) g_free(fileopen.datafile);
217 if(fileopen.outputfile) g_free(fileopen.outputfile);
218 if(fileopen.logfile) g_free(fileopen.logfile);
219 if(fileopen.moldenfile) g_free(fileopen.moldenfile);
220
221 fileopen.projectname=g_strdup(data->projectname);
222 fileopen.datafile=g_strdup(data->datafile);
223 fileopen.localdir=g_strdup(data->localdir);
224
225 if(data->itype == PROG_IS_MOLCAS)
226 {
227 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
228 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
229 /* fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);*/
230 fileopen.moldenfile=g_strdup_printf("'%s.*.molden'", fileopen.projectname);
231 }
232 else if(data->itype == PROG_IS_MOLPRO)
233 {
234 fileopen.outputfile=g_strdup_printf("%s.out",fileopen.projectname);
235 fileopen.logfile=g_strdup_printf("%s.log",fileopen.projectname);
236 fileopen.moldenfile=g_strdup_printf("%s.molden",fileopen.projectname);
237 }
238 else if(data->itype == PROG_IS_GAUSS)
239 {
240 fileopen.outputfile = g_strdup_printf("%s.log",fileopen.projectname);
241 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
242 fileopen.moldenfile=g_strdup_printf("%s.log",fileopen.projectname);
243 }
244 else if(data->itype == PROG_IS_MPQC)
245 {
246 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
247 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
248 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
249 }
250 else if(data->itype == PROG_IS_ORCA)
251 {
252 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
253 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
254 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
255 }
256 else if(data->itype == PROG_IS_QCHEM)
257 {
258 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
259 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
260 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
261 }
262 else if(data->itype == PROG_IS_NWCHEM)
263 {
264 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
265 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
266 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
267 }
268 else if(data->itype == PROG_IS_PSICODE)
269 {
270 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
271 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
272 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
273 }
274 else if(data->itype == PROG_IS_MOPAC)
275 {
276 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
277 fileopen.logfile = g_strdup_printf("%s.aux",fileopen.projectname);
278 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
279 }
280 else if(data->itype == PROG_IS_FIREFLY)
281 {
282 fileopen.outputfile = g_strdup_printf("%s.log",fileopen.projectname);
283 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
284 fileopen.moldenfile=g_strdup_printf("%s.log",fileopen.projectname);
285 }
286 else if(data->itype == PROG_IS_DEMON)
287 {
288 fileopen.outputfile = g_strdup_printf("%s.out",fileopen.projectname);
289 fileopen.logfile = g_strdup_printf("%s.out",fileopen.projectname);
290 fileopen.moldenfile=g_strdup_printf("%s.out",fileopen.projectname);
291 }
292 else if(data->itype == PROG_IS_GAMESS)
293 {
294 fileopen.outputfile = g_strdup_printf("%s.log",fileopen.projectname);
295 fileopen.logfile = g_strdup_printf("%s.log",fileopen.projectname);
296 fileopen.moldenfile=g_strdup_printf("%s.log",fileopen.projectname);
297 }
298 else
299 {
300 fileopen.outputfile = g_strdup_printf("unknown");
301 fileopen.logfile = g_strdup_printf("unknown");
302 fileopen.moldenfile = g_strdup_printf("unknown");
303 }
304
305 fileopen.remotehost = g_strdup(data->remotehost);
306 fileopen.remoteuser = g_strdup(data->remoteuser);
307 fileopen.remotepass = g_strdup(data->remotepass);
308 fileopen.remotedir = g_strdup(data->remotedir);
309 fileopen.command=g_strdup(data->command);
310 fileopen.netWorkProtocol = data->netWorkProtocol;
311
312
313 if(lastdirectory) g_free(lastdirectory);
314 lastdirectory = g_strdup(fileopen.localdir);
315 }
316 /********************************************************************************/
set_properties(GtkWidget * Win,gpointer data)317 static void set_properties(GtkWidget *Win,gpointer data)
318 {
319 DataTree* newdata = NULL;
320 DataTree* olddata = (DataTree*)(g_object_get_data(G_OBJECT(Win),"Data"));
321 GtkWidget **entrys = (GtkWidget **)(g_object_get_data(G_OBJECT(Win),"Entrys"));
322 GtkWidget **buttons =(GtkWidget **)(g_object_get_data(G_OBJECT(Win),"Buttons"));
323
324 GtkWidget * buttonSsh = g_object_get_data(G_OBJECT(Win),"ButtonSsh");
325 /*
326 GtkWidget * buttonFtpRsh = g_object_get_data(G_OBJECT(Win),"ButtonFtpRsh");
327 */
328
329 gchar* remotehost = NULL;
330 gchar* remoteuser = NULL;
331 gchar* remotepass = NULL;
332 gchar* remotedir = NULL;
333 GabEditNetWork netWorkProtocol ;
334
335
336 if (GTK_TOGGLE_BUTTON (buttons[0])->active)
337 {
338 remotehost = g_strdup("");
339 remoteuser = g_strdup("");
340 remotepass = g_strdup("");
341 remotedir = g_strdup("");
342 }
343 else
344 {
345 remotehost = g_strdup(gtk_entry_get_text(GTK_ENTRY(entrys[0])));
346 remoteuser = g_strdup(gtk_entry_get_text(GTK_ENTRY(entrys[1])));
347 remotepass = g_strdup(gtk_entry_get_text(GTK_ENTRY(entrys[2])));
348 remotedir = g_strdup(gtk_entry_get_text(GTK_ENTRY(entrys[3])));
349 }
350 if (GTK_TOGGLE_BUTTON (buttonSsh)->active) netWorkProtocol = GABEDIT_NETWORK_SSH;
351 else netWorkProtocol = GABEDIT_NETWORK_FTP_RSH;
352
353
354 newdata = tree_data_new (
355 olddata->projectname,olddata->datafile,olddata->localdir,
356 remotehost,remoteuser,remotepass,remotedir,
357 olddata->itype, olddata->command, netWorkProtocol);
358 if(remotehost) g_free(remotehost);
359 if(remoteuser) g_free(remoteuser);
360 if(remotepass) g_free(remotepass);
361 if(remotedir) g_free(remotedir);
362
363 clear_one_project();
364 AddFeuille(GTK_TREE_VIEW(treeViewProjects),noeud[newdata->itype],newdata);
365 if(Nfiles==0)
366 AllFiles = g_malloc(sizeof(DataTree*));
367 else
368 AllFiles = (DataTree**)g_realloc(AllFiles,(Nfiles+1)*sizeof(DataTree*));
369 Nfiles++;
370 AllFiles[Nfiles-1] = newdata;
371 if( strcmp(fileopen.projectname,newdata->projectname)==0
372 && strcmp(fileopen.localdir,newdata->localdir)==0
373 )
374 {
375 set_fileopen(newdata);
376 change_all_labels();
377 }
378 }
379 /********************************************************************************/
set_password_visibility(GtkWidget * button,gpointer data)380 static void set_password_visibility(GtkWidget *button,gpointer data)
381 {
382 GtkWidget * entryPassWord = g_object_get_data(G_OBJECT (button), "EntryPassWord");
383 GtkWidget * label1PassWord = g_object_get_data(G_OBJECT (button), "Label1PassWord");
384 GtkWidget * label2PassWord = g_object_get_data(G_OBJECT (button), "Label2PassWord");
385
386 if (GTK_TOGGLE_BUTTON (button)->active)
387 {
388 gboolean Ok = FALSE;
389 if(data != NULL ) Ok = TRUE;
390
391 gtk_widget_set_sensitive(entryPassWord, Ok);
392 gtk_widget_set_sensitive(label1PassWord, Ok);
393 gtk_widget_set_sensitive(label2PassWord, Ok);
394 }
395 }
396 /********************************************************************************/
set_frame_remote_sensitive(GtkWidget * button,gpointer data)397 static void set_frame_remote_sensitive(GtkWidget *button,gpointer data)
398 {
399 GtkWidget *FrameRemote = GTK_WIDGET(g_object_get_data(G_OBJECT(button),"FrameRemote"));
400 GtkWidget *FrameNetWork = GTK_WIDGET(g_object_get_data(G_OBJECT(button),"FrameNetWork"));
401 if (GTK_TOGGLE_BUTTON (button)->active)
402 {
403 gboolean Ok = FALSE;
404 if(data != NULL ) Ok = TRUE;
405
406 gtk_widget_set_sensitive(FrameRemote, Ok);
407 gtk_widget_set_sensitive(FrameNetWork, Ok);
408
409 }
410 }
411 /********************************************************************************/
changed_user(GtkWidget * combo,gpointer data)412 static void changed_user(GtkWidget *combo,gpointer data)
413 {
414 GtkWidget **entry = (GtkWidget **)data;
415 gint nlistdir = 1;
416 G_CONST_RETURN gchar *hostname;
417 G_CONST_RETURN gchar *username;
418 gint numhost = -1;
419 gint numuser = -1;
420 GtkWidget* combodir = NULL;
421 gint i;
422 gint j;
423 GList *glist = NULL;
424
425 if(!this_is_an_object((GtkObject*)entry[0]))
426 return;
427 if(!this_is_an_object((GtkObject*)entry[1]))
428 return;
429 if(!this_is_an_object((GtkObject*)entry[3]))
430 return;
431
432 hostname = gtk_entry_get_text(GTK_ENTRY(entry[0]));
433
434 username = gtk_entry_get_text(GTK_ENTRY(entry[1]));
435
436 combodir = g_object_get_data(G_OBJECT (entry[3]), "Combo");
437
438 if(!combodir)
439 return;
440
441 if(recenthosts.nhosts>0)
442 {
443 for(i=0;i<recenthosts.nhosts;i++)
444 if(strcmp(hostname,recenthosts.hosts[i].hostname) == 0)
445 {
446 numhost = i;
447 for(j=0;j<recenthosts.hosts[numhost].nusers;j++)
448 if(strcmp(username,recenthosts.hosts[i].users[j].username) == 0)
449 {
450 numuser = j;
451 break;
452 }
453
454 break;
455 }
456 if(numhost<0)
457 return;
458 if(numuser<0)
459 return;
460
461 nlistdir = recenthosts.hosts[numhost].users[numuser].ndirs;
462 for(i=0;i<nlistdir;i++)
463 glist = g_list_append(glist,recenthosts.hosts[numhost].users[numuser].dirs[i]);
464 }
465 else
466 return;
467
468
469 gtk_combo_box_entry_set_popdown_strings( combodir, glist) ;
470
471
472 g_list_free(glist);
473 }
474 /********************************************************************************/
changed_host(GtkWidget * combo,gpointer data)475 static void changed_host(GtkWidget *combo,gpointer data)
476 {
477 GtkWidget **entry = (GtkWidget **)data;
478 gint nlistuser = 1;
479 G_CONST_RETURN gchar *hostname;
480 gint numhost = -1;
481 GtkWidget* combouser = NULL;
482 gint i;
483 GList *glist = NULL;
484
485 hostname = gtk_entry_get_text(GTK_ENTRY(entry[0]));
486 if(!this_is_an_object((GtkObject*)entry[1]))
487 return;
488 combouser = g_object_get_data(G_OBJECT (entry[1]), "Combo");
489 if(!combouser)
490 return;
491 if(recenthosts.nhosts>0)
492 {
493 for(i=0;i<recenthosts.nhosts;i++)
494 if(strcmp(hostname,recenthosts.hosts[i].hostname) == 0)
495 {
496 numhost = i;
497 break;
498 }
499 if(numhost<0)
500 return;
501
502 nlistuser = recenthosts.hosts[numhost].nusers;
503 for(i=0;i<recenthosts.hosts[numhost].nusers;i++)
504 glist = g_list_append(glist,recenthosts.hosts[numhost].users[i].username);
505 }
506 else
507 return;
508
509
510 for (i=0;i<nlistuser;i++)
511 gtk_combo_box_entry_set_popdown_strings( combouser, glist) ;
512
513
514 g_list_free(glist);
515 }
516 /********************************************************************************/
create_info_win()517 static void create_info_win()
518 {
519 gchar *title = g_strdup_printf(_("Properties of project"));
520 GtkWidget *fp;
521 GtkWidget *vboxwin;
522 GtkWidget *hbox = NULL;
523 GtkWidget *button = NULL;
524 GtkTreeIter node;
525 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
526 DataTree* data = NULL;
527
528 if(atoi(selectedRow)<0) return;
529 if(!gtk_tree_model_get_iter_from_string (model, &node, selectedRow)) return;
530 gtk_tree_model_get (model, &node, LIST_DATA, &data, -1);
531
532 if(!data) return;
533
534 fp = gtk_window_new (GTK_WINDOW_TOPLEVEL);
535 gtk_window_set_title(GTK_WINDOW(fp),title);
536 gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
537 gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Fenetre));
538
539 vboxwin = create_vbox(fp);
540 gtk_widget_realize(fp);
541 init_child(fp,gtk_widget_destroy,_(" Prop. of project "));
542 g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)destroy_children,NULL);
543
544 hbox = gtk_hbox_new(0,FALSE);
545 gtk_box_pack_start (GTK_BOX(vboxwin),hbox , TRUE, TRUE, 2);
546 gtk_widget_show(hbox);
547 create_local_frame_popup(hbox,data);
548 create_remote_frame_popup(hbox,data);
549 create_hseparator(vboxwin);
550 /* OK bouton box */
551 hbox = create_hbox(vboxwin);
552 gtk_box_set_homogeneous (GTK_BOX(hbox), FALSE);
553 button = create_button(fp,"OK");
554 gtk_box_pack_end (GTK_BOX( hbox), button, FALSE, FALSE, 3);
555 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
556 gtk_widget_grab_default(button);
557
558 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)destroy_children,GTK_OBJECT(fp));
559 gtk_widget_show_all(fp);
560 }
561 /********************************************************************************/
create_set_dialogue_window()562 static void create_set_dialogue_window()
563 {
564 GtkWidget *fp;
565 GtkWidget *frame;
566 GtkWidget *vboxall;
567 GtkWidget *vboxwin;
568 GtkWidget *hbox;
569 GtkWidget *button;
570 GtkWidget **entrys;
571 GtkWidget **buttons;
572 GtkWidget *FrameRemote = NULL;
573 GtkWidget *FrameNetWork = NULL;
574 gchar *title = g_strdup_printf(_("Set properties of project"));
575 GtkWidget *ButtonFtpRsh;
576 GtkWidget *ButtonSsh;
577 GtkWidget *label1PassWord;
578 GtkWidget *label2PassWord;
579
580 GtkTreeIter node;
581 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
582 DataTree* data = NULL;
583
584 if(atoi(selectedRow)<0) return;
585 if(!gtk_tree_model_get_iter_from_string (model, &node, selectedRow)) return;
586 gtk_tree_model_get (model, &node, LIST_DATA, &data, -1);
587
588 if(!data) return;
589
590 entrys = g_malloc(4*sizeof(GtkWidget *));
591 buttons = g_malloc(2*sizeof(GtkWidget *));
592
593 /* Principal Window */
594 fp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
595 gtk_window_set_title(GTK_WINDOW(fp),title);
596 gtk_window_set_position(GTK_WINDOW(fp),GTK_WIN_POS_CENTER);
597 gtk_window_set_transient_for(GTK_WINDOW(fp),GTK_WINDOW(Fenetre));
598
599 gtk_widget_realize(fp);
600 init_child(fp,gtk_widget_destroy,_(" Prop. of project "));
601 g_signal_connect(G_OBJECT(fp),"delete_event",(GCallback)destroy_children,NULL);
602
603 gtk_container_set_border_width (GTK_CONTAINER (fp), 5);
604 vboxall = create_vbox(fp);
605 vboxwin = vboxall;
606
607 frame = gtk_frame_new (NULL);
608 gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
609 gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT);
610 gtk_container_add(GTK_CONTAINER(vboxall),frame);
611 gtk_widget_show (frame);
612
613 vboxall = create_vbox(frame);
614
615 hbox = create_hbox(vboxall);
616
617 /* server frame */
618 {
619 GtkWidget *Table;
620 GtkWidget *vboxframe;
621
622 frame = gtk_frame_new (_("Server"));
623 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
624 gtk_box_pack_start (GTK_BOX( hbox), frame, TRUE, TRUE, 2);
625 gtk_widget_show (frame);
626
627 vboxframe = gtk_vbox_new (TRUE, 0);
628 gtk_widget_show (vboxframe);
629 gtk_container_add (GTK_CONTAINER (frame), vboxframe);
630
631 Table = gtk_table_new(1,2,TRUE);
632 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
633
634 buttons[0] = gtk_radio_button_new_with_label( NULL,_("Local"));
635
636 gtk_table_attach(GTK_TABLE(Table), buttons[0] ,0,1,0,1,
637 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
638 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
639 1,1);
640
641 buttons[1] = gtk_radio_button_new_with_label(gtk_radio_button_get_group (GTK_RADIO_BUTTON (buttons[0])),"Remote host ");
642 gtk_table_attach(GTK_TABLE(Table), buttons[1] ,1,2,0,1,
643 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
644 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
645 1,1);
646 }
647
648 /* local frame */
649 {
650 GtkWidget* vboxframe;
651 GtkWidget* Table;
652 gchar* t = NULL;
653
654
655 frame = gtk_frame_new (_("Local"));
656 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
657 gtk_container_add (GTK_CONTAINER (vboxall), frame);
658 gtk_widget_show (frame);
659
660 vboxframe = create_vbox(frame);
661 Table = gtk_table_new(2,3,FALSE);
662 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
663
664 add_label_table(Table,_("Local Directory "),0,0);
665 add_label_table(Table,":",0,1);
666 add_label_table(Table,data->localdir,0,2);
667
668 if(
669 data->itype == PROG_IS_GAUSS || data->itype == PROG_IS_MOLCAS ||
670 data->itype == PROG_IS_MOLPRO || data->itype == PROG_IS_MPQC
671 || data->itype == PROG_IS_ORCA
672 || data->itype == PROG_IS_QCHEM
673 || data->itype == PROG_IS_NWCHEM
674 || data->itype == PROG_IS_PSICODE
675 || data->itype == PROG_IS_MOPAC
676 || data->itype == PROG_IS_GAMESS
677 || data->itype == PROG_IS_DEMON
678 || data->itype == PROG_IS_FIREFLY
679 )
680 add_label_table(Table,_("Files "),1,0);
681 else
682 add_label_table(Table,_("File "),1,0);
683
684 switch(data->itype)
685 {
686 case PROG_IS_DEMON :
687 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
688 break;
689
690 case PROG_IS_GAMESS :
691 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
692 break;
693
694 case PROG_IS_GAUSS :
695 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
696 break;
697
698 case PROG_IS_MOLCAS :
699 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
700 break;
701
702 case PROG_IS_MOLPRO :
703 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
704 break;
705
706 case PROG_IS_MPQC :
707 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
708 break;
709
710 case PROG_IS_FIREFLY :
711 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
712 break;
713
714 case PROG_IS_ORCA :
715 t = g_strdup_printf("%s, %s.out, %s.out, %s.out",data->datafile,data->projectname,data->projectname,data->projectname);
716 break;
717 case PROG_IS_QCHEM :
718 t = g_strdup_printf("%s, %s.out, %s.out, %s.out",data->datafile,data->projectname,data->projectname,data->projectname);
719 break;
720 case PROG_IS_NWCHEM :
721 t = g_strdup_printf("%s, %s.out, %s.out, %s.out",data->datafile,data->projectname,data->projectname,data->projectname);
722 break;
723
724 case PROG_IS_PSICODE :
725 t = g_strdup_printf("%s, %s.out, %s.out, %s.out",data->datafile,data->projectname,data->projectname,data->projectname);
726 break;
727
728 case PROG_IS_MOPAC :
729 t = g_strdup_printf("%s, %s.out, %s.aux, %s.out",data->datafile,data->projectname,data->projectname,data->projectname);
730 break;
731
732 case GABEDIT_TYPENODE_GABEDIT :
733 case GABEDIT_TYPENODE_XYZ :
734 case GABEDIT_TYPENODE_MOL2 :
735 case GABEDIT_TYPENODE_TINKER :
736 case GABEDIT_TYPENODE_PDB :
737 case GABEDIT_TYPENODE_GZMAT :
738 case GABEDIT_TYPENODE_MZMAT :
739 case GABEDIT_TYPENODE_HIN :
740 t = g_strdup_printf("%s",data->datafile);
741 break;
742
743 default :
744 t = g_strdup_printf("%s",data->projectname);
745
746 }
747 add_label_table(Table,":",1,1);
748 add_label_table(Table,t,1,2);
749 g_free(t);
750 }
751
752 /* network protocol frame */
753 {
754 GtkWidget *frame;
755 GtkWidget *vboxframe;
756 GtkWidget *table = gtk_table_new(1,2,FALSE);
757 gchar ftprsh[] = N_("FTP and rsh protocols");
758 gchar ssh[] = N_("ssh/scp protocols ");
759
760 frame = gtk_frame_new (_("NetWork protocols"));
761 gtk_widget_show (frame);
762 gtk_box_pack_start (GTK_BOX (vboxall), frame, TRUE, TRUE, 0);
763
764 vboxframe = gtk_vbox_new (TRUE, 0);
765 gtk_widget_show (vboxframe);
766 gtk_container_add (GTK_CONTAINER (frame), vboxframe);
767
768 gtk_box_pack_start (GTK_BOX (vboxframe), table, TRUE, TRUE, 0);
769
770 ButtonFtpRsh = gtk_radio_button_new_with_label( NULL,ftprsh);
771 gtk_table_attach(GTK_TABLE(table),ButtonFtpRsh,0,1,0,1,
772 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
773 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
774 1,1);
775 gtk_widget_show (ButtonFtpRsh);
776
777 ButtonSsh = gtk_radio_button_new_with_label( gtk_radio_button_get_group (GTK_RADIO_BUTTON (ButtonFtpRsh)), ssh);
778 gtk_table_attach(GTK_TABLE(table),ButtonSsh,1,2,0,1,
779 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
780 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
781 1,1);
782 gtk_widget_show (ButtonSsh);
783 FrameNetWork = frame;
784
785
786 }
787 /* remote frame */
788 {
789 GtkWidget *combo;
790 GtkWidget *vboxframe;
791 #define NLABEL 4
792 gchar *LabelLeft[NLABEL];
793 gushort i;
794 GtkWidget *Table;
795 gchar *tlisthost[NHOSTMAX];
796 gchar *tlistuser[NHOSTMAX];
797 gchar *tlistdir[NHOSTMAX];
798 gint nlisthost = 1;
799 gint nlistuser = 1;
800 gint nlistdir = 1;
801
802 if(recenthosts.nhosts>0)
803 {
804 nlisthost = recenthosts.nhosts;
805 for(i=0;i<nlisthost;i++)
806 tlisthost[i] = g_strdup(recenthosts.hosts[i].hostname);
807 nlistuser = recenthosts.hosts[0].nusers;
808 for(i=0;i<recenthosts.hosts[0].nusers;i++)
809 tlistuser[i] = g_strdup(recenthosts.hosts[0].users[i].username);
810 nlistdir = recenthosts.hosts[0].users[0].ndirs;
811 for(i=0;i<recenthosts.hosts[0].users[0].ndirs;i++)
812 tlistdir[i] = g_strdup(recenthosts.hosts[0].users[0].dirs[i]);
813 }
814 else
815 {
816 tlisthost[0] = g_strdup("hostname");
817 tlistuser[0] = g_strdup("login");
818 tlistdir[0] = g_strdup("");
819 }
820
821 LabelLeft[0] = g_strdup(_("Host name"));
822 LabelLeft[1] = g_strdup(_("Login"));
823 LabelLeft[2] = g_strdup(_("Password"));
824 LabelLeft[3] = g_strdup(_("Working Directory"));
825
826 frame = gtk_frame_new (_("Remote host"));
827 FrameRemote = frame;
828 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
829 gtk_container_add (GTK_CONTAINER (vboxall), frame);
830 gtk_widget_show (frame);
831
832 vboxframe = create_vbox(frame);
833 Table = gtk_table_new(3,3,FALSE);
834 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
835
836 i = 0;
837 add_label_table(Table,LabelLeft[i],(gushort)(i),0);
838 add_label_table(Table,":",(gushort)(i),1);
839 combo = create_combo_box_entry(tlisthost,nlisthost,TRUE,-1,-1);
840 gtk_table_attach(GTK_TABLE(Table),combo,2,3,i,i+1,
841 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND) ,
842 (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
843 1,1);
844 gtk_widget_show (combo);
845 entrys[i] = GTK_BIN(combo)->child;
846 g_object_set_data(G_OBJECT (entrys[i]), "Combo",combo);
847 g_signal_connect(G_OBJECT(GTK_COMBO_BOX(combo)), "changed",G_CALLBACK(changed_host),entrys);
848
849 i = 1;
850 add_label_table(Table,LabelLeft[i],(gushort)(i),0);
851 add_label_table(Table,":",(gushort)(i),1);
852 combo = create_combo_box_entry(tlistuser,nlistuser,TRUE,-1,-1);
853 add_widget_table(Table,combo,(gushort)(i),2);
854 entrys[i] = GTK_BIN(combo)->child;
855 g_object_set_data(G_OBJECT (entrys[i]), "Combo",combo);
856 g_signal_connect(G_OBJECT(GTK_COMBO_BOX(combo)), "changed",G_CALLBACK(changed_user),entrys);
857
858 i = 2;
859 label1PassWord = add_label_table(Table,LabelLeft[i],(gushort)(i),0);
860 label2PassWord = add_label_table(Table,":",(gushort)(i),1);
861 entrys[i] = gtk_entry_new ();
862 gtk_entry_set_visibility(GTK_ENTRY (entrys[i]),FALSE);
863 add_widget_table(Table,entrys[i],(gushort)(i),2);
864
865 i = 3;
866 add_label_table(Table,LabelLeft[i],(gushort)(i),0);
867 add_label_table(Table,":",(gushort)(i),1);
868 combo = create_combo_box_entry(tlistdir,nlistdir,TRUE,-1,-1);
869 add_widget_table(Table,combo,(gushort)(i),2);
870 entrys[i] = GTK_BIN(combo)->child;
871 g_object_set_data(G_OBJECT (entrys[i]), "Combo",combo);
872
873 gtk_widget_show_all(frame);
874
875 if(data->remotehost)
876 gtk_entry_set_text(GTK_ENTRY(entrys[0]),data->remotehost);
877 if(data->remoteuser)
878 gtk_entry_set_text(GTK_ENTRY(entrys[1]),data->remoteuser);
879 if(data->remotepass)
880 gtk_entry_set_text(GTK_ENTRY(entrys[2]),data->remotepass);
881 if(data->remotedir)
882 gtk_entry_set_text(GTK_ENTRY(entrys[3]),data->remotedir);
883
884 for (i=0;i<NLABEL;i++)
885 g_free(LabelLeft[i]);
886 for (i=0;i<nlisthost;i++)
887 g_free(tlisthost[i]);
888 for (i=0;i<nlistuser;i++)
889 g_free(tlistuser[i]);
890 for (i=0;i<nlistdir;i++)
891 g_free(tlistdir[i]);
892
893 }
894
895 g_object_set_data(G_OBJECT (ButtonFtpRsh), "EntryPassWord", entrys[2]);
896 g_object_set_data(G_OBJECT (ButtonFtpRsh), "Label1PassWord", label1PassWord);
897 g_object_set_data(G_OBJECT (ButtonFtpRsh), "Label2PassWord", label2PassWord);
898 g_signal_connect(G_OBJECT(ButtonFtpRsh), "clicked",G_CALLBACK(set_password_visibility),ButtonFtpRsh);
899
900 g_object_set_data(G_OBJECT (ButtonSsh), "EntryPassWord", entrys[2]);
901 g_object_set_data(G_OBJECT (ButtonSsh), "Label1PassWord", label1PassWord);
902 g_object_set_data(G_OBJECT (ButtonSsh), "Label2PassWord", label2PassWord);
903 g_signal_connect(G_OBJECT(ButtonSsh), "clicked",G_CALLBACK(set_password_visibility),NULL);
904
905
906 /* OK and Cancel boutons box */
907 hbox = create_hbox(vboxwin);
908
909 button = create_button(fp,_("Cancel"));
910 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
911 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
912 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)destroy_children,GTK_OBJECT(fp));
913 gtk_widget_show (button);
914
915 button = create_button(fp,"OK");
916 gtk_box_pack_start (GTK_BOX( hbox), button, TRUE, TRUE, 3);
917 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
918 gtk_widget_grab_default(button);
919 gtk_widget_show (button);
920 g_object_set_data(G_OBJECT(fp),"Entrys",entrys);
921 g_object_set_data(G_OBJECT(fp),"Buttons",buttons);
922 g_object_set_data(G_OBJECT(fp),"Data",data);
923 g_object_set_data(G_OBJECT(fp),"ButtonSsh",ButtonSsh);
924 g_object_set_data(G_OBJECT(fp),"ButtonFtpRsh",ButtonFtpRsh);
925
926 g_signal_connect_swapped(G_OBJECT(button), "clicked",G_CALLBACK(set_properties),(gpointer)fp);
927 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)destroy_children,GTK_OBJECT(fp));
928
929
930 g_object_set_data(G_OBJECT(buttons[0]),"FrameRemote",FrameRemote);
931 g_object_set_data(G_OBJECT(buttons[1]),"FrameRemote",FrameRemote);
932 g_object_set_data(G_OBJECT(buttons[0]),"FrameNetWork",FrameNetWork);
933 g_object_set_data(G_OBJECT(buttons[1]),"FrameNetWork",FrameNetWork);
934 g_signal_connect(G_OBJECT(buttons[0]), "clicked",G_CALLBACK(set_frame_remote_sensitive),NULL);
935 g_signal_connect(G_OBJECT(buttons[1]), "clicked",G_CALLBACK(set_frame_remote_sensitive),frame);
936 #ifdef G_OS_WIN32
937 gtk_widget_set_sensitive(buttons[0], FALSE);
938 #endif
939 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (buttons[1]), TRUE);
940
941 if(data->netWorkProtocol== GABEDIT_NETWORK_FTP_RSH) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ButtonFtpRsh), TRUE);
942 else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ButtonSsh), TRUE);
943
944 /* Show all */
945 gtk_widget_show_all(fp);
946 }
947 /********************************************************************************/
set_label_infos_file()948 void set_label_infos_file()
949 {
950 gtk_label_set_text(GTK_LABEL(LocalLabel[2]),fileopen.localdir);
951 if(fileopen.remotehost)
952 gtk_label_set_text(GTK_LABEL(RemoteLabel[0]),fileopen.remotehost);
953 else
954 gtk_label_set_text(GTK_LABEL(RemoteLabel[0])," ");
955 if(fileopen.remoteuser)
956 gtk_label_set_text(GTK_LABEL(RemoteLabel[1]),fileopen.remoteuser);
957 else
958 gtk_label_set_text(GTK_LABEL(RemoteLabel[1])," ");
959 if(fileopen.remotedir)
960 gtk_label_set_text(GTK_LABEL(RemoteLabel[2]),fileopen.remotedir);
961 else
962 gtk_label_set_text(GTK_LABEL(RemoteLabel[2])," ");
963
964 if(fileopen.remotepass && !this_is_a_backspace(fileopen.remotepass))
965 gtk_entry_set_text(GTK_ENTRY(ResultEntryPass),fileopen.remotepass);
966 else
967 gtk_entry_set_text(GTK_ENTRY(ResultEntryPass),"");
968
969 if(
970 fileopen.remotehost && !this_is_a_backspace(fileopen.remotehost) &&
971 fileopen.remoteuser && !this_is_a_backspace(fileopen.remoteuser)
972 )
973 {
974
975 set_sensitive_remote_frame(TRUE);
976 }
977 else
978 set_sensitive_remote_frame(FALSE);
979
980
981 }
982 /********************************************************************************/
create_remote_frame_popup(GtkWidget * hbox,DataTree * data)983 static void create_remote_frame_popup(GtkWidget *hbox,DataTree* data)
984 {
985 GtkWidget *frame;
986 GtkWidget *Label;
987 GtkWidget *vboxframe;
988 gchar *LabelLeft[4];
989 gushort i;
990 GtkWidget *Table;
991 gchar* t = NULL;
992
993 LabelLeft[0] = g_strdup(_("Host"));
994 LabelLeft[1] = g_strdup(_("Login"));
995 LabelLeft[2] = g_strdup(_("Directory"));
996
997
998 if(data->itype == PROG_IS_GAUSS
999 || data->itype == PROG_IS_MOLCAS
1000 || data->itype == PROG_IS_MOLPRO
1001 || data->itype == PROG_IS_MPQC
1002 || data->itype == PROG_IS_GAMESS
1003 || data->itype == PROG_IS_FIREFLY
1004 || data->itype == PROG_IS_DEMON
1005 || data->itype == PROG_IS_QCHEM
1006 || data->itype == PROG_IS_NWCHEM
1007 || data->itype == PROG_IS_PSICODE
1008 || data->itype == PROG_IS_MOPAC
1009 || data->itype == PROG_IS_ORCA )
1010 LabelLeft[3] = g_strdup(_("Files"));
1011 else
1012 LabelLeft[3] = g_strdup(_("File"));
1013
1014 frame = gtk_frame_new (_("Remote"));
1015 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
1016 gtk_box_pack_start (GTK_BOX(hbox),frame, TRUE, TRUE, 1);
1017 gtk_widget_show (frame);
1018
1019 vboxframe = create_vbox(frame);
1020 Table = gtk_table_new(4,3,FALSE);
1021 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
1022
1023 Label = add_label_table(Table,LabelLeft[0],0,0);
1024 add_label_table(Table,":",0,1);
1025 add_label_table(Table,data->remotehost,0,2);
1026
1027 Label = add_label_table(Table,LabelLeft[1],1,0);
1028 add_label_table(Table,":",1,1);
1029 if(data->remoteuser && strlen(data->remoteuser)<1 && this_is_a_backspace(data->remoteuser))
1030 {
1031 add_label_table(Table,data->remoteuser,1,2);
1032 }
1033 else
1034 {
1035 gchar* tmp = NULL;
1036 if(data->netWorkProtocol== GABEDIT_NETWORK_FTP_RSH) tmp = g_strdup_printf(_("%s [Using rsh/ftp Protocol]"), data->remoteuser);
1037 else tmp = g_strdup_printf(_("%s [Using ssh Protocol]"),data->remoteuser);
1038 add_label_table(Table,tmp,1,2);
1039 g_free(tmp);
1040
1041 }
1042
1043 Label = add_label_table(Table,LabelLeft[2],2,0);
1044 add_label_table(Table,":",2,1);
1045 add_label_table(Table,data->remotedir,2,2);
1046
1047 if(!data->remotehost || this_is_a_backspace(data->remotehost))
1048 t = g_strdup("");
1049 else
1050 switch(data->itype)
1051 {
1052 case PROG_IS_DEMON :
1053 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1054 break;
1055
1056 case PROG_IS_GAMESS :
1057 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
1058 break;
1059
1060 case PROG_IS_GAUSS :
1061 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
1062 break;
1063
1064 case PROG_IS_MOLCAS :
1065 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
1066 break;
1067
1068 case PROG_IS_MOLPRO :
1069 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
1070 break;
1071 case PROG_IS_MPQC :
1072 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
1073 break;
1074
1075 case PROG_IS_FIREFLY :
1076 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
1077 break;
1078 case PROG_IS_ORCA :
1079 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1080 break;
1081
1082 case PROG_IS_QCHEM :
1083 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1084 break;
1085
1086 case PROG_IS_NWCHEM :
1087 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1088 break;
1089
1090 case PROG_IS_PSICODE :
1091 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1092 break;
1093
1094
1095 case PROG_IS_MOPAC :
1096 t = g_strdup_printf("%s, %s.out, %s.aux",data->datafile,data->projectname,data->projectname);
1097 break;
1098
1099 case GABEDIT_TYPENODE_GABEDIT :
1100 case GABEDIT_TYPENODE_XYZ :
1101 case GABEDIT_TYPENODE_MOL2 :
1102 case GABEDIT_TYPENODE_TINKER :
1103 case GABEDIT_TYPENODE_PDB :
1104 case GABEDIT_TYPENODE_GZMAT :
1105 case GABEDIT_TYPENODE_MZMAT :
1106 case GABEDIT_TYPENODE_HIN :
1107 t = g_strdup_printf("%s",data->datafile);
1108 break;
1109 default :
1110 t = g_strdup_printf("%s",data->projectname);
1111
1112 }
1113
1114 Label = add_label_table(Table,LabelLeft[3],3,0);
1115 add_label_table(Table,":",3,1);
1116 add_label_table(Table,t,3,2);
1117 g_free(t);
1118
1119 for (i=0;i<4;i++)
1120 g_free(LabelLeft[i]);
1121 }
1122 /********************************************************************************/
create_local_frame_popup(GtkWidget * hbox,DataTree * data)1123 static void create_local_frame_popup(GtkWidget *hbox,DataTree* data)
1124 {
1125 GtkWidget *frame;
1126 GtkWidget *Label;
1127 GtkWidget *vboxframe;
1128 gchar *LabelLeft[4];
1129 gushort i;
1130 GtkWidget *Table;
1131 gchar localhost[100];
1132 G_CONST_RETURN gchar *localuser = get_local_user();
1133 gchar *t;
1134
1135 #ifdef G_OS_WIN32
1136 winsockCheck(stderr);
1137 #endif
1138 gethostname(localhost,100);
1139 LabelLeft[0] = g_strdup(_("Host"));
1140 LabelLeft[1] = g_strdup(_("Login"));
1141 LabelLeft[2] = g_strdup(_("Directory"));
1142 if(data->itype == PROG_IS_GAUSS
1143 || data->itype == PROG_IS_MOLCAS
1144 || data->itype == PROG_IS_MOLPRO
1145 || data->itype == PROG_IS_MPQC
1146 || data->itype == PROG_IS_GAMESS
1147 || data->itype == PROG_IS_DEMON
1148 || data->itype == PROG_IS_FIREFLY
1149 || data->itype == PROG_IS_QCHEM
1150 || data->itype == PROG_IS_NWCHEM
1151 || data->itype == PROG_IS_PSICODE
1152 || data->itype == PROG_IS_MOPAC
1153 || data->itype == PROG_IS_ORCA )
1154 LabelLeft[3] = g_strdup(_("Files"));
1155 else
1156 LabelLeft[3] = g_strdup(_("File"));
1157
1158 frame = gtk_frame_new (_("Local"));
1159 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
1160 gtk_box_pack_start (GTK_BOX(hbox),frame, TRUE, TRUE, 1);
1161 gtk_widget_show (frame);
1162
1163 vboxframe = create_vbox(frame);
1164 Table = gtk_table_new(4,3,FALSE);
1165 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
1166
1167 Label = add_label_table(Table,LabelLeft[0],0,0);
1168 add_label_table(Table,":",0,1);
1169 add_label_table(Table,localhost,0,2);
1170
1171 Label = add_label_table(Table,LabelLeft[1],1,0);
1172 add_label_table(Table,":",1,1);
1173 add_label_table(Table,localuser,1,2);
1174
1175 Label = add_label_table(Table,LabelLeft[2],2,0);
1176 add_label_table(Table,":",2,1);
1177 add_label_table(Table,data->localdir,2,2);
1178
1179
1180 switch(data->itype)
1181 {
1182 case PROG_IS_DEMON :
1183 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1184 break;
1185
1186 case PROG_IS_GAMESS :
1187 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
1188 break;
1189
1190 case PROG_IS_GAUSS :
1191 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
1192 break;
1193
1194 case PROG_IS_MOLCAS :
1195 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
1196 break;
1197
1198 case PROG_IS_MOLPRO :
1199 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
1200 break;
1201 case PROG_IS_MPQC :
1202 t = g_strdup_printf("%s, %s.out, %s.log, %s.molden",data->datafile,data->projectname,data->projectname,data->projectname);
1203 break;
1204
1205 case PROG_IS_FIREFLY :
1206 t = g_strdup_printf("%s, %s.log",data->datafile,data->projectname);
1207 break;
1208
1209 case PROG_IS_ORCA :
1210 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1211 break;
1212
1213 case PROG_IS_QCHEM :
1214 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1215 break;
1216
1217 case PROG_IS_NWCHEM :
1218 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1219 break;
1220
1221 case PROG_IS_PSICODE :
1222 t = g_strdup_printf("%s, %s.out",data->datafile,data->projectname);
1223 break;
1224
1225
1226 case PROG_IS_MOPAC :
1227 t = g_strdup_printf("%s, %s.out, %s.aux",data->datafile,data->projectname, data->projectname);
1228 break;
1229 case GABEDIT_TYPENODE_GABEDIT :
1230 case GABEDIT_TYPENODE_XYZ :
1231 case GABEDIT_TYPENODE_MOL2 :
1232 case GABEDIT_TYPENODE_TINKER :
1233 case GABEDIT_TYPENODE_PDB :
1234 case GABEDIT_TYPENODE_GZMAT :
1235 case GABEDIT_TYPENODE_MZMAT :
1236 case GABEDIT_TYPENODE_HIN :
1237 t = g_strdup_printf("%s",data->datafile);
1238 break;
1239 default :
1240 t = g_strdup_printf("%s",data->datafile);
1241
1242 }
1243
1244 Label = add_label_table(Table,LabelLeft[3],3,0);
1245 add_label_table(Table,":",3,1);
1246 add_label_table(Table,t,3,2);
1247 g_free(t);
1248
1249 for (i=0;i<4;i++)
1250 g_free(LabelLeft[i]);
1251 }
1252 /********************************************************************************/
destroy_popup(gpointer data)1253 static gint destroy_popup(gpointer data)
1254 {
1255 gtk_widget_hide(GTK_WIDGET(data));
1256 gtk_object_destroy(GTK_OBJECT(data));
1257 popupshow = FALSE;
1258 return FALSE;
1259 }
1260 /********************************************************************************/
create_popupwin(DataTree * data)1261 static void create_popupwin(DataTree* data)
1262 {
1263 GtkWidget *MainFrame;
1264 GtkWidget *hbox = gtk_hbox_new(0,FALSE);
1265
1266 popupshow = TRUE;
1267
1268 MainFrame = gtk_window_new (GTK_WINDOW_POPUP);
1269
1270 /* center it on the screen*/
1271 gtk_window_set_position(GTK_WINDOW (MainFrame), GTK_WIN_POS_MOUSE);
1272
1273 /* set up key and mound button press to hide splash screen*/
1274
1275 gtk_widget_add_events(MainFrame,
1276 GDK_BUTTON_PRESS_MASK|
1277 GDK_BUTTON_RELEASE_MASK|
1278 GDK_KEY_PRESS_MASK);
1279
1280 g_signal_connect(G_OBJECT(MainFrame),"button_release_event",
1281 G_CALLBACK(destroy_popup),NULL);
1282 g_signal_connect(G_OBJECT(MainFrame),"key_press_event",
1283 G_CALLBACK(gtk_widget_destroy),NULL);
1284 gtk_widget_realize(MainFrame);
1285
1286 gtk_widget_show(hbox);
1287 gtk_container_add (GTK_CONTAINER (MainFrame), hbox);
1288 create_local_frame_popup(hbox,data);
1289 create_remote_frame_popup(hbox,data);
1290 gtk_widget_show_all(MainFrame);
1291
1292 /* force it to draw now.*/
1293 /* gdk_flush();*/
1294
1295 /* go into main loop, processing events.*/
1296 while(gtk_events_pending())
1297 gtk_main_iteration();
1298 /* after 3 seconds, destroy the splash screen.*/
1299 /* gtk_timeout_add( 5000, destroy_popup, MainFrame );*/
1300 }
1301 /********************************************************************************/
create_remote_frame(GtkWidget * hbox)1302 static void create_remote_frame(GtkWidget *hbox)
1303 {
1304 GtkWidget *frame;
1305 GtkWidget *Label;
1306 GtkWidget *vboxframe;
1307 gchar *LabelLeft[NR];
1308 gushort i;
1309 GtkWidget *Table;
1310
1311 LabelLeft[0] = g_strdup(_("Host"));
1312 LabelLeft[1] = g_strdup(_("Login"));
1313 LabelLeft[2] = g_strdup(_("Directory"));
1314
1315 frame = gtk_frame_new (_("Remote"));
1316 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
1317 gtk_box_pack_start (GTK_BOX(hbox),frame, TRUE, TRUE, 1);
1318 gtk_widget_show (frame);
1319
1320 vboxframe = create_vbox(frame);
1321 Table = gtk_table_new(3,3,FALSE);
1322 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
1323
1324 Label = add_label_table(Table,LabelLeft[0],0,0);
1325 add_label_table(Table,":",0,1);
1326 RemoteLabel[0] = add_label_table(Table,"",0,2);
1327
1328 Label = add_label_table(Table,LabelLeft[1],1,0);
1329 add_label_table(Table,":",1,1);
1330 RemoteLabel[1] = add_label_table(Table,"",1,2);
1331
1332 Label = add_label_table(Table,LabelLeft[2],2,0);
1333 add_label_table(Table,":",2,1);
1334 RemoteLabel[2] = add_label_table(Table,"",2,2);
1335
1336
1337
1338 for (i=0;i<NR;i++)
1339 g_free(LabelLeft[i]);
1340 }
1341 /********************************************************************************/
resetFontLabelErrOut()1342 void resetFontLabelErrOut()
1343 {
1344 GtkWidget* labelOngletOut = g_object_get_data(G_OBJECT (Fenetre), "LabelOngletOutput");
1345 GtkWidget* labelOngletErr = g_object_get_data(G_OBJECT (Fenetre), "LabelOngletError");
1346 PangoFontDescription *font_desc = pango_font_description_from_string (FontsStyleLabel.fontname);
1347
1348 /********/
1349 return;
1350
1351 GtkStyle* style;
1352 if(!font_desc)return;
1353 if(labelOngletOut)
1354 {
1355 style = gtk_style_copy(gtk_widget_get_style(labelOngletOut));
1356 if(!style) return;
1357 if(font_desc) style->font_desc = font_desc;
1358 gtk_widget_set_style(labelOngletOut, style );
1359 }
1360 if(labelOngletErr)
1361 {
1362 style = gtk_style_copy(gtk_widget_get_style(labelOngletErr));
1363 if(!style) return;
1364 if(font_desc) style->font_desc = font_desc;
1365 gtk_widget_set_style(labelOngletErr, style );
1366 }
1367 }
1368 /********************************************************************************/
AddNotebookPage(GtkWidget * NoteBook,char * label,GtkWidget ** TextP)1369 static void AddNotebookPage(GtkWidget* NoteBook,char *label,GtkWidget **TextP)
1370 {
1371 GtkWidget *scrolledwindow;
1372 GtkWidget *Frame;
1373 GtkWidget *LabelOnglet;
1374 GtkWidget *LabelMenu;
1375 GtkWidget *vboxframe = NULL;
1376
1377
1378 Frame = gtk_frame_new(NULL);
1379 gtk_container_set_border_width(GTK_CONTAINER(Frame), 2);
1380
1381 LabelOnglet = gtk_label_new(label);
1382 gtk_widget_show(LabelOnglet);
1383 if(strstr(label,_("Output")))
1384 {
1385 GtkStyle* style = gtk_style_copy( gtk_widget_get_default_style ());
1386 /*
1387 PangoFontDescription *font_desc = pango_font_description_from_string (FontsStyleLabel.fontname);
1388 */
1389
1390 style->fg[0].red=0;
1391 style->fg[0].green=0;
1392 style->fg[0].blue=65535;
1393 /*
1394 if(font_desc) style->font_desc = font_desc;
1395 */
1396 gtk_widget_set_style(LabelOnglet, style );
1397 vboxframe = create_vbox(Frame);
1398 g_object_set_data(G_OBJECT (Fenetre), "LabelOngletOutput", LabelOnglet);
1399 }
1400 else
1401 if(strstr(label,_("Error")))
1402 {
1403 /*
1404 PangoFontDescription *font_desc = pango_font_description_from_string (FontsStyleLabel.fontname);
1405 */
1406 GtkStyle* style = gtk_style_copy(LabelOnglet->style);
1407 style->fg[0].red=65535;
1408 style->fg[0].green=0;
1409 style->fg[0].blue=0;
1410 /*
1411 if(font_desc) style->font_desc = font_desc;
1412 */
1413 gtk_widget_set_style(LabelOnglet, style );
1414 g_object_set_data(G_OBJECT (Fenetre), "LabelOngletError", LabelOnglet);
1415 }
1416 LabelMenu = gtk_label_new(label);
1417 gtk_notebook_append_page_menu(GTK_NOTEBOOK(NoteBook),Frame,LabelOnglet, LabelMenu);
1418
1419 g_object_set_data(G_OBJECT (Frame), "Frame", Frame);
1420
1421 scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1422 gtk_widget_show (scrolledwindow);
1423 if(strstr(label,_("Output")))
1424 {
1425 gtk_box_pack_start (GTK_BOX(vboxframe),scrolledwindow, TRUE, TRUE, 1);
1426 create_status_progress_connection_bar(vboxframe);
1427 }
1428 else
1429 gtk_container_add (GTK_CONTAINER (Frame), scrolledwindow);
1430 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
1431
1432 *TextP = gabedit_text_new ();
1433 set_tab_size (*TextP, 8);
1434 /* gabedit_text_set_word_wrap (GABEDIT_TEXT(*TextP), FALSE);*/
1435 gtk_widget_show (*TextP);
1436 gtk_container_add (GTK_CONTAINER (scrolledwindow), *TextP);
1437 }
1438 /*****************************************************************************************/
create_local_frame(GtkWidget * hbox)1439 static void create_local_frame(GtkWidget *hbox)
1440 {
1441 GtkWidget *frame;
1442 GtkWidget *Label;
1443 GtkWidget *vboxframe;
1444 gchar *LabelLeft[NL];
1445 gushort i;
1446 GtkWidget *Table;
1447 gchar localhost[100];
1448 G_CONST_RETURN gchar *localuser = get_local_user();
1449
1450 #ifdef G_OS_WIN32
1451 winsockCheck(stderr);
1452 #endif
1453 gethostname(localhost,100);
1454 LabelLeft[0] = g_strdup(_("Host"));
1455 LabelLeft[1] = g_strdup(_("Login"));
1456 LabelLeft[2] = g_strdup(_("Directory"));
1457
1458 frame = gtk_frame_new (_("Local"));
1459 gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
1460 gtk_box_pack_start (GTK_BOX(hbox),frame, TRUE, TRUE, 1);
1461 gtk_widget_show (frame);
1462
1463 vboxframe = create_vbox(frame);
1464 Table = gtk_table_new(3,3,FALSE);
1465 gtk_container_add(GTK_CONTAINER(vboxframe),Table);
1466
1467 Label = add_label_table(Table,LabelLeft[0],0,0);
1468 add_label_table(Table,":",0,1);
1469 LocalLabel[0] = add_label_table(Table,localhost,0,2);
1470
1471 Label = add_label_table(Table,LabelLeft[1],1,0);
1472 add_label_table(Table,":",1,1);
1473 LocalLabel[1] = add_label_table(Table,localuser,1,2);
1474
1475 Label = add_label_table(Table,LabelLeft[2],2,0);
1476 add_label_table(Table,":",2,1);
1477 LocalLabel[2] = add_label_table(Table," ",2,2);
1478
1479 for (i=0;i<NL;i++)
1480 g_free(LabelLeft[i]);
1481 }
1482 /********************************************************************************/
AddNotebookPageFiles(GtkWidget * NoteBook,char * label)1483 static void AddNotebookPageFiles(GtkWidget* NoteBook,char *label)
1484 {
1485 GtkWidget *vboxframe;
1486 GtkWidget *hbox;
1487 GtkWidget *LabelOnglet;
1488 GtkWidget *LabelMenu;
1489
1490
1491 vboxframe = gtk_vbox_new(0,FALSE);
1492
1493 LabelOnglet = gtk_label_new(label);
1494 LabelMenu = gtk_label_new(label);
1495 gtk_notebook_append_page_menu(GTK_NOTEBOOK(NoteBook),
1496 vboxframe,
1497 LabelOnglet, LabelMenu);
1498 /*
1499 vboxframe = gtk_vbox_new(0,FALSE);
1500 gtk_container_add (GTK_CONTAINER (Frame),vboxframe);
1501 */
1502
1503 hbox = gtk_hbox_new(TRUE,1);
1504 gtk_container_add(GTK_CONTAINER(vboxframe),hbox);
1505 create_local_frame(hbox);
1506 create_remote_frame(hbox);
1507
1508 }
1509 /********************************************************************************/
cree_files_out_err_notebook(GtkWidget * box)1510 void cree_files_out_err_notebook(GtkWidget* box)
1511 {
1512 GtkWidget *NoteBook;
1513
1514 NoteBook = gtk_notebook_new();
1515 gtk_notebook_set_show_border(GTK_NOTEBOOK(NoteBook),TRUE);
1516 gtk_notebook_popup_enable(GTK_NOTEBOOK(NoteBook));
1517 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(NoteBook),GTK_POS_LEFT);
1518 gtk_notebook_set_scrollable(GTK_NOTEBOOK(NoteBook), TRUE);
1519 gtk_widget_show(NoteBook);
1520 gtk_box_pack_start(GTK_BOX (box), NoteBook,FALSE, TRUE, 0);
1521
1522 AddNotebookPageFiles(NoteBook,_(" Location "));
1523
1524 AddNotebookPage(NoteBook,_(" Output "),&TextOutput);
1525 gabedit_text_set_editable (GABEDIT_TEXT (TextOutput), FALSE);
1526 set_font (TextOutput,FontsStyleResult.fontname);
1527 set_base_style(TextOutput,FontsStyleResult.BaseColor.red ,FontsStyleResult.BaseColor.green ,FontsStyleResult.BaseColor.blue);
1528 set_text_style(TextOutput,FontsStyleResult.TextColor.red ,FontsStyleResult.TextColor.green ,FontsStyleResult.TextColor.blue);
1529
1530 AddNotebookPage(NoteBook,_(" Error "),&TextError);
1531 gabedit_text_set_editable (GABEDIT_TEXT (TextError), FALSE);
1532 set_font (TextError,FontsStyleResult.fontname);
1533 set_base_style(TextError,FontsStyleResult.BaseColor.red ,FontsStyleResult.BaseColor.green ,FontsStyleResult.BaseColor.blue);
1534 set_text_style(TextError,FontsStyleResult.TextColor.red ,FontsStyleResult.TextColor.green ,FontsStyleResult.TextColor.blue);
1535 gtk_widget_show(NoteBook);
1536 hide_progress_connection();
1537 NoteBookInfo = NoteBook;
1538
1539 }
1540 /********************************************************************************/
save_one_line(FILE * fd,gchar * st)1541 static void save_one_line(FILE* fd,gchar* st)
1542 {
1543 if(!st || strlen(st)<1)
1544 {
1545 fprintf(fd," \n");
1546 return;
1547 }
1548 str_delete_n(st);
1549 if(strlen(st)<1)
1550 {
1551 fprintf(fd," \n");
1552 return;
1553 }
1554 fprintf(fd,"%s\n",st);
1555 }
1556 /********************************************************************************/
parse_liste_files()1557 void parse_liste_files()
1558 {
1559 gint i;
1560 FILE *fd;
1561 gchar *outfile= g_strdup_printf("%s%slistfiles",gabedit_directory(), G_DIR_SEPARATOR_S);
1562 gboolean *toprint = g_malloc(Nfiles*sizeof(gboolean));
1563 gint Nf[NBNOD];
1564 gint NfAll=0;
1565 gboolean expanded[NBNOD];
1566 gchar* pathString;
1567 GtkTreeIter iter;
1568 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
1569
1570 if(AllFiles == NULL) return;
1571
1572
1573 for(i=0;i<NBNOD;i++)
1574 {
1575 expanded[i] = FALSE;
1576 if (noeud[i] == NULL) continue;
1577 pathString = g_strdup_printf("%d", i);
1578 if(gtk_tree_model_get_iter_from_string (model, &iter, pathString) == TRUE)
1579 {
1580 GtkTreePath *path = gtk_tree_path_new_from_string (pathString);
1581 expanded[i] = gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeViewProjects), path);
1582 gtk_tree_path_free(path);
1583 }
1584 g_free(pathString);
1585 }
1586
1587 if(!AllFiles)
1588 {
1589 fd = FOpen(outfile, "w");
1590 if(fd)
1591 {
1592 fprintf(fd,"0\n");
1593 }
1594 fclose(fd);
1595 return;
1596 }
1597 for(i=0;i<NBNOD;i++)
1598 {
1599 Nf[i] = 0;
1600 }
1601
1602 for(i=Nfiles-1;i>=0;i--)
1603 {
1604 if(Nf[AllFiles[i]->itype]<=20)
1605 {
1606 Nf[AllFiles[i]->itype]++;
1607 NfAll++;
1608 toprint[i] = TRUE;
1609 }
1610 else
1611 toprint[i] = FALSE;
1612 }
1613
1614 fd = FOpen(outfile, "w");
1615 if(fd)
1616 {
1617 fprintf(fd,"%d\n",NfAll);
1618 for(i=0;i<Nfiles;i++)
1619 if(toprint[i])
1620 {
1621 fprintf(fd,"%d\n",AllFiles[i]->itype);
1622 save_one_line(fd,AllFiles[i]->projectname);
1623 save_one_line(fd,AllFiles[i]->datafile);
1624 save_one_line(fd,AllFiles[i]->localdir);
1625 save_one_line(fd,AllFiles[i]->remotehost);
1626 save_one_line(fd,AllFiles[i]->remoteuser);
1627 save_one_line(fd,AllFiles[i]->remotedir);
1628 save_one_line(fd,AllFiles[i]->command);
1629
1630 if(AllFiles[i]->netWorkProtocol == GABEDIT_NETWORK_FTP_RSH) fprintf(fd,"0\n");
1631 else fprintf(fd,"1\n");
1632 }
1633
1634 for(i=0;i<NBNOD;i++)
1635 fprintf(fd,"%d\n",(gint)expanded[i]);
1636 fclose(fd);
1637 }
1638 g_free(outfile);
1639 g_free(toprint);
1640 }
1641 /********************************************************************************/
get_one_line(FILE * fd,gchar st[])1642 static void get_one_line(FILE* fd,gchar st[])
1643 {
1644 static gint taille = BSIZE;
1645 gchar t[BSIZE];
1646
1647 { char* e = fgets(t,taille,fd);}
1648 strcpy(st,t);
1649 str_delete_n(st);
1650 }
1651 /********************************************************************************/
add_liste_files()1652 static void add_liste_files()
1653 {
1654 gint i;
1655 FILE *fd;
1656 gint taille = BSIZE;
1657 gchar *t=g_malloc(BSIZE*sizeof(gchar));
1658 gint itype;
1659 gchar* projectname = g_malloc(BSIZE*sizeof(gchar));
1660 gchar* datafile = g_malloc(BSIZE*sizeof(gchar));
1661 gchar* localdir = g_malloc(BSIZE*sizeof(gchar));
1662 gchar* remotehost = g_malloc(BSIZE*sizeof(gchar));
1663 gchar* remoteuser = g_malloc(BSIZE*sizeof(gchar));
1664 gchar* remotedir = g_malloc(BSIZE*sizeof(gchar));
1665 gchar* command = g_malloc(BSIZE*sizeof(gchar));
1666 gchar *outfile= g_strdup_printf("%s%slistfiles",gabedit_directory(), G_DIR_SEPARATOR_S);
1667 gint Nf =0;
1668 gboolean expanded;
1669 GabEditNetWork netWorkProtocol;
1670 gint iNet = 0;
1671 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
1672 GtkTreeIter iter;
1673
1674 #ifdef G_OS_WIN32
1675 fd = FOpen(outfile, "r");
1676 #else
1677 fd = FOpen(outfile, "rb");
1678 #endif
1679 if(fd)
1680 {
1681 { char* e = fgets(t,BSIZE,fd);}
1682 Nf = atoi(t);
1683 Nfiles = 0;
1684 if(Nf>0)
1685 {
1686 for(i=0;i<Nf;i++)
1687 {
1688 projectname[0] = '\0';
1689 datafile[0] = '\0';
1690 localdir[0] = '\0';
1691 remotehost[0] = '\0';
1692 remoteuser[0] = '\0';
1693 remotedir[0] = '\0';
1694
1695 { char* e = fgets(t,BSIZE,fd);}
1696 sscanf(t,"%d",&itype);
1697 get_one_line(fd,projectname);
1698 get_one_line(fd,datafile);
1699 get_one_line(fd,localdir);
1700 get_one_line(fd,remotehost);
1701 get_one_line(fd,remoteuser);
1702 get_one_line(fd,remotedir);
1703 get_one_line(fd,command);
1704 { char* e = fgets(t,BSIZE,fd);}
1705 sscanf(t,"%d",&iNet);
1706 if(iNet==0) netWorkProtocol = GABEDIT_NETWORK_FTP_RSH;
1707 else netWorkProtocol = GABEDIT_NETWORK_SSH;
1708
1709 CreeFeuille(treeViewProjects, noeud[itype],projectname,datafile,localdir,remotehost,remoteuser,"",remotedir,itype, command, netWorkProtocol);
1710 }
1711 }
1712 for(i=0;i<NBNOD;i++)
1713 {
1714 if(fgets(t,taille,fd))
1715 expanded =(gboolean)atoi(t);
1716 else
1717 expanded =FALSE;
1718 if(expanded)
1719 {
1720 gchar* pathString = g_strdup_printf("%d", i);
1721 if(gtk_tree_model_get_iter_from_string (model, &iter, pathString) == TRUE)
1722 {
1723 GtkTreePath *path = gtk_tree_path_new_from_string (pathString);
1724 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(treeViewProjects), path);
1725 gtk_tree_path_free(path);
1726 }
1727 g_free(pathString);
1728 }
1729 }
1730
1731 fclose(fd);
1732 }
1733 g_free(projectname);
1734 g_free(datafile);
1735 g_free(localdir);
1736 g_free(remotehost);
1737 g_free(remoteuser);
1738 g_free(remotedir);
1739 g_free(command);
1740 g_free(outfile);
1741 g_free(t);
1742 }
1743 /********************************************************************************/
get_doc_no_add_list(GtkWidget * wid,gpointer d)1744 static void get_doc_no_add_list(GtkWidget *wid, gpointer d)
1745 {
1746 DataTree* data = (DataTree*)d;
1747 gchar *t;
1748 FILE *fd = NULL;
1749 guint nchar;
1750 guint taille=BSIZE;
1751
1752 gchar *NomFichier = NULL;
1753 NomFichier = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1754
1755 if ((!NomFichier) || (strcmp(NomFichier,"") == 0)) return ;
1756
1757 t=g_malloc(taille*sizeof(gchar));
1758 fd = FOpen(NomFichier, "rb");
1759 if(fd == NULL)
1760 {
1761 //fprintf(stderr,"\nSorry, I can not open file :\n %s\n",NomFichier);
1762 g_free(t);
1763 t = g_strdup_printf(_("\nSorry, I can not open file :\n %s\n"),NomFichier);
1764 Message(t,"ERROR",TRUE);
1765 g_free(t);
1766 return;
1767 }
1768
1769 iprogram = get_type_of_program(fd);
1770 //fprintf(stderr,"\niprog=%d\n",iprogram);
1771
1772 nchar=gabedit_text_get_length(GABEDIT_TEXT(text));
1773 gtk_notebook_set_current_page((GtkNotebook*)NoteBookText,0);
1774 gabedit_text_set_point(GABEDIT_TEXT(text),0);
1775 gabedit_text_forward_delete(GABEDIT_TEXT(text),nchar);
1776 while(1)
1777 {
1778 nchar = fread(t, 1, taille, fd);
1779 gabedit_text_insert (GABEDIT_TEXT(text), NULL, NULL, NULL, t,nchar);
1780 if(nchar<taille) break;
1781 }
1782 fclose(fd);
1783 g_free(t);
1784 gabedit_text_set_point(GABEDIT_TEXT(text),0);
1785
1786 set_fileopen(data);
1787
1788
1789 if(iprogram == PROG_IS_MOLPRO ) read_geom_in_molpro_input(NomFichier);
1790 else if(iprogram == PROG_IS_GAUSS) read_geom_in_gauss_input(NomFichier);
1791 else if(iprogram == PROG_IS_DEMON) read_geom_in_demon_input(NomFichier);// TO CHANGE
1792 else if(iprogram == PROG_IS_GAMESS) read_geom_in_gamess_input(NomFichier);
1793 else if(iprogram == PROG_IS_FIREFLY) read_geom_in_gamess_input(NomFichier);
1794 else if(iprogram == PROG_IS_MOLCAS)
1795 {
1796 setMolcasVariablesFromInputFile(NomFichier);
1797 read_geom_in_molcas_input(NomFichier);
1798 }
1799 else if(iprogram == PROG_IS_MPQC) read_geom_in_mpqc_input(NomFichier);
1800 else if(iprogram == PROG_IS_QCHEM) read_geom_in_qchem_input(NomFichier);
1801 else if(iprogram == PROG_IS_NWCHEM) read_geom_in_nwchem_input(NomFichier);
1802 else if(iprogram == PROG_IS_PSICODE) read_geom_in_psicode_input(NomFichier);
1803 else if(iprogram == PROG_IS_ORCA) read_geom_in_orca_input(NomFichier);
1804 else if(iprogram == PROG_IS_MOPAC) read_geom_in_mopac_input(NomFichier);
1805
1806 /* printf("iprogram=%d nwchem=%d orca=%d\n",iprogram,PROG_IS_NWCHEM,PROG_IS_ORCA);*/
1807
1808 data_modify(FALSE);
1809
1810 if(GeomConvIsOpen) find_energy_all(NULL,NULL);
1811 }
1812 /********************************************************************************/
select_row(DataTree * data)1813 static void select_row(DataTree* data)
1814 {
1815 gchar *t;
1816 gchar *allname = NULL;
1817
1818 if (!data) return;
1819
1820 switch(data->itype)
1821 {
1822 case GABEDIT_TYPENODE_DEMON:
1823 case GABEDIT_TYPENODE_GAMESS:
1824 case GABEDIT_TYPENODE_GAUSSIAN:
1825 case GABEDIT_TYPENODE_MOLCAS:
1826 case GABEDIT_TYPENODE_MOLPRO:
1827 case GABEDIT_TYPENODE_MPQC:
1828 case GABEDIT_TYPENODE_FIREFLY:
1829 case GABEDIT_TYPENODE_ORCA:
1830 case GABEDIT_TYPENODE_QCHEM:
1831 case GABEDIT_TYPENODE_NWCHEM:
1832 case GABEDIT_TYPENODE_PSICODE:
1833 case GABEDIT_TYPENODE_MOPAC:
1834 case NBNOD-1:
1835 if(imodif == DATA_MOD_YES)
1836 {
1837 t = g_strdup_printf(_("\nThe \"%s\" file has been modified.\n\n"),get_name_file(fileopen.datafile));
1838 t = g_strdup_printf(_(" %sIf you continue, you lose what you have changed.\n\n"),t);
1839 t = g_strdup_printf(_(" %sYou want to continue?\n"),t);
1840 Continue_YesNo(get_doc_no_add_list, data,t);
1841 g_free(t);
1842 }
1843 else
1844 get_doc_no_add_list(NULL,data);
1845 break;
1846 case GABEDIT_TYPENODE_GABEDIT:
1847 MethodeGeom = GEOM_IS_XYZ;
1848 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1849 read_gabedit_file_no_add_list(allname);
1850 set_last_directory(allname);
1851 g_free(allname);
1852 break;
1853 case GABEDIT_TYPENODE_XYZ:
1854 MethodeGeom = GEOM_IS_XYZ;
1855 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1856 read_XYZ_file_no_add_list(allname);
1857 set_last_directory(allname);
1858 g_free(allname);
1859 break;
1860 case GABEDIT_TYPENODE_MOL2:
1861 MethodeGeom = GEOM_IS_XYZ;
1862 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1863 read_mol2_tinker_file_no_add_list(allname,"MOL2");
1864 set_last_directory(allname);
1865 g_free(allname);
1866 break;
1867 case GABEDIT_TYPENODE_TINKER:
1868 MethodeGeom = GEOM_IS_XYZ;
1869 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1870 read_mol2_tinker_file_no_add_list(allname,"TINKER");
1871 set_last_directory(allname);
1872 g_free(allname);
1873 break;
1874 case GABEDIT_TYPENODE_PDB:
1875 MethodeGeom = GEOM_IS_XYZ;
1876 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1877 read_pdb_file_no_add_list(allname);
1878 set_last_directory(allname);
1879 g_free(allname);
1880 break;
1881 case GABEDIT_TYPENODE_GZMAT:
1882 MethodeGeom = GEOM_IS_ZMAT;
1883 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1884 read_ZMatrix_file_no_add_list(allname);
1885 set_last_directory(allname);
1886 g_free(allname);
1887 break;
1888 case GABEDIT_TYPENODE_MZMAT:
1889 MethodeGeom = GEOM_IS_ZMAT;
1890 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1891 read_ZMatrix_mopac_file_no_add_list(allname);
1892 set_last_directory(allname);
1893 g_free(allname);
1894 break;
1895 case GABEDIT_TYPENODE_HIN:
1896 MethodeGeom = GEOM_IS_XYZ;
1897 allname = g_strdup_printf("%s%s%s",data->localdir,G_DIR_SEPARATOR_S,data->datafile);
1898 read_hin_file_no_add_list(allname);
1899 set_last_directory(allname);
1900 g_free(allname);
1901 }
1902 }
1903 /********************************************************************************/
event_dispatcher(GtkWidget * widget,GdkEventButton * event,gpointer user_data)1904 static void event_dispatcher(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
1905 {
1906 GtkTreePath *path;
1907 GtkTreeIter iter;
1908 GtkTreeModel *model;
1909
1910 if (!event) return;
1911 if(popupshow) return;
1912 if (event->window == gtk_tree_view_get_bin_window (GTK_TREE_VIEW (widget))
1913 && !gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), event->x, event->y, NULL, NULL, NULL, NULL)) {
1914 gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)));
1915 }
1916 if(gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), event->x, event->y, &path, NULL, NULL, NULL))
1917 {
1918 if(path)
1919 {
1920 model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
1921 gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)), path);
1922 sprintf(selectedRow ,"%s", gtk_tree_path_to_string(path));
1923 gtk_tree_model_get_iter (model, &iter, path);
1924 gtk_tree_path_free(path);
1925 if (event->type == GDK_2BUTTON_PRESS && ((GdkEventButton *) event)->button == 1)
1926 {
1927 DataTree* data = NULL;
1928 gtk_tree_model_get (model, &iter, LIST_DATA, &data, -1);
1929 if(data) select_row(data);
1930 }
1931 else
1932 if (event->type == GDK_BUTTON_PRESS && ((GdkEventButton *) event)->button == 2)
1933 {
1934 DataTree* data = NULL;
1935 gtk_tree_model_get (model, &iter, LIST_DATA, &data, -1);
1936 if(data) create_popupwin(data);
1937 }
1938 else
1939 if (event->type == GDK_BUTTON_PRESS && ((GdkEventButton *) event)->button == 3)
1940 {
1941 GdkEventButton *bevent = (GdkEventButton *) event;
1942 GtkUIManager *manager = GTK_UI_MANAGER(user_data);
1943 if(atoi(selectedRow) < 0)
1944 {
1945 set_sensitive_option(manager, "/MenuRecentProjects/Cut", FALSE);
1946 set_sensitive_option(manager, "/MenuRecentProjects/Set", FALSE);
1947 set_sensitive_option(manager, "/MenuRecentProjects/Info", FALSE);
1948 }
1949 else
1950 {
1951 DataTree* data = NULL;
1952 gtk_tree_model_get (model, &iter, LIST_DATA, &data, -1);
1953 if(data)
1954 {
1955 set_sensitive_option(manager, "/MenuRecentProjects/Cut", TRUE);
1956 set_sensitive_option(manager, "/MenuRecentProjects/Set", TRUE);
1957 set_sensitive_option(manager, "/MenuRecentProjects/Info", TRUE);
1958 }
1959 else
1960 {
1961 set_sensitive_option(manager, "/MenuRecentProjects/Cut", FALSE);
1962 set_sensitive_option(manager, "/MenuRecentProjects/Set", FALSE);
1963 set_sensitive_option(manager, "/MenuRecentProjects/Info", FALSE);
1964 }
1965 }
1966 show_menu_popup(manager, bevent->button, bevent->time);
1967 }
1968 }
1969 }
1970 GTK_WIDGET_GET_CLASS(widget)->button_press_event(widget, event);
1971 }
1972 /********************************************************************************/
tree_clear_all()1973 static void tree_clear_all()
1974 {
1975 gint i;
1976 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
1977 GtkTreeStore *store = GTK_TREE_STORE (model);
1978
1979 if(AllFiles == NULL) return;
1980
1981 gtk_tree_store_clear(store);
1982
1983 for(i=0;i<Nfiles;i++) tree_data_destroy (AllFiles[i]);
1984
1985 g_free(AllFiles);
1986 AllFiles = NULL;
1987 Nfiles = 0;
1988
1989 noeud[GABEDIT_TYPENODE_DEMON]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"DeMon");
1990 noeud[GABEDIT_TYPENODE_FIREFLY]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"FireFly");
1991 noeud[GABEDIT_TYPENODE_GAMESS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gamess");
1992 noeud[GABEDIT_TYPENODE_GAUSSIAN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gaussian");
1993 noeud[GABEDIT_TYPENODE_MOLCAS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molcas");
1994 noeud[GABEDIT_TYPENODE_MOLPRO]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molpro");
1995 noeud[GABEDIT_TYPENODE_MOPAC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac");
1996 noeud[GABEDIT_TYPENODE_MPQC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"MPQC");
1997 noeud[GABEDIT_TYPENODE_NWCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"NWChem");
1998 noeud[GABEDIT_TYPENODE_PSICODE]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Psicode");
1999 noeud[GABEDIT_TYPENODE_ORCA]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"ORCA");
2000 noeud[GABEDIT_TYPENODE_QCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Q-Chem");
2001 noeud[GABEDIT_TYPENODE_GABEDIT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gabedit");
2002 noeud[GABEDIT_TYPENODE_XYZ]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"XYZ");
2003 noeud[GABEDIT_TYPENODE_MOL2]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mol2");
2004 noeud[GABEDIT_TYPENODE_PDB]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"PDB");
2005 noeud[GABEDIT_TYPENODE_TINKER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Tinker");
2006 noeud[GABEDIT_TYPENODE_GZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gauss zmat");
2007 noeud[GABEDIT_TYPENODE_MZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac zmat");
2008 noeud[GABEDIT_TYPENODE_HIN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Hyperchem");
2009 noeud[GABEDIT_TYPENODE_OTHER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Others");
2010 }
2011 /********************************************************************************/
tree_data_destroy_one_node(gint inode)2012 static void tree_data_destroy_one_node (gint inode)
2013 {
2014 gint ifdel = 0;
2015 gint ifn = 0;
2016 gint i;
2017 DataTree** tmp=NULL;
2018
2019
2020 if(AllFiles == NULL)
2021 return;
2022
2023 for(i=0;i<Nfiles;i++)
2024 {
2025 if(AllFiles[i]->itype == inode)
2026 {
2027 ifdel++;
2028 if(AllFiles[i]->projectname)
2029 g_free(AllFiles[i]->projectname);
2030 if(AllFiles[i]->localdir)
2031 g_free(AllFiles[i]->localdir);
2032 if(AllFiles[i]->remotehost)
2033 g_free(AllFiles[i]->remotehost);
2034 if(AllFiles[i]->remoteuser)
2035 g_free(AllFiles[i]->remoteuser);
2036 if(AllFiles[i]->remotepass)
2037 g_free(AllFiles[i]->remotepass);
2038 if(AllFiles[i]->remotedir)
2039 g_free(AllFiles[i]->remotedir);
2040 if(AllFiles[i]->command)
2041 g_free(AllFiles[i]->command);
2042 AllFiles[i]->noeud=NULL;
2043 AllFiles[i]->projectname=g_strdup("DELETED");
2044 }
2045 }
2046
2047 if(Nfiles>ifdel)
2048 tmp = g_malloc((Nfiles-ifdel)*sizeof(DataTree*));
2049 else
2050 {
2051 Nfiles = 0;
2052 if(AllFiles)
2053 g_free(AllFiles);
2054 AllFiles = NULL;
2055 return;
2056 }
2057 ifn =0;
2058 for(i=0;i<Nfiles;i++)
2059 {
2060 if(AllFiles[i]->itype != inode)
2061 {
2062 tmp[ifn]=AllFiles[i];
2063 ifn++;
2064 }
2065 }
2066
2067
2068 Nfiles = ifn;
2069 if(AllFiles)
2070 g_free(AllFiles);
2071 AllFiles = tmp;
2072
2073 }
2074 /********************************************************************************/
tree_clear_one(gint in)2075 static void tree_clear_one(gint in)
2076 {
2077 gint i;
2078 gboolean expanded[NBNOD];
2079 gchar* pathString;
2080 GtkTreeIter iter;
2081
2082 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
2083 GtkTreeStore *store = GTK_TREE_STORE (model);
2084
2085 if(AllFiles == NULL) return;
2086
2087
2088 for(i=0;i<NBNOD;i++)
2089 {
2090 expanded[i] = FALSE;
2091 if (noeud[i] == NULL) continue;
2092 pathString = g_strdup_printf("%d", i);
2093 if(gtk_tree_model_get_iter_from_string (model, &iter, pathString) == TRUE)
2094 {
2095 GtkTreePath *path = gtk_tree_path_new_from_string (pathString);
2096 expanded[i] = gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeViewProjects), path);
2097 gtk_tree_path_free(path);
2098 }
2099 g_free(pathString);
2100 }
2101
2102 gtk_tree_store_clear(store);
2103
2104 tree_data_destroy_one_node (in);
2105
2106 noeud[GABEDIT_TYPENODE_DEMON]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"DeMon");
2107 noeud[GABEDIT_TYPENODE_FIREFLY]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"FireFly");
2108 noeud[GABEDIT_TYPENODE_GAMESS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gamess");
2109 noeud[GABEDIT_TYPENODE_GAUSSIAN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gaussian");
2110 noeud[GABEDIT_TYPENODE_MOLCAS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molcas");
2111 noeud[GABEDIT_TYPENODE_MOLPRO]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molpro");
2112 noeud[GABEDIT_TYPENODE_MOPAC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac");
2113 noeud[GABEDIT_TYPENODE_MPQC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"MPQC");
2114 noeud[GABEDIT_TYPENODE_NWCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"NWChem");
2115 noeud[GABEDIT_TYPENODE_PSICODE]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Psicode");
2116 noeud[GABEDIT_TYPENODE_ORCA]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"ORCA");
2117 noeud[GABEDIT_TYPENODE_QCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Q-Chem");
2118 noeud[GABEDIT_TYPENODE_GABEDIT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gabedit");
2119 noeud[GABEDIT_TYPENODE_XYZ]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"XYZ");
2120 noeud[GABEDIT_TYPENODE_MOL2]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mol2");
2121 noeud[GABEDIT_TYPENODE_PDB]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"PDB");
2122 noeud[GABEDIT_TYPENODE_TINKER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Tinker");
2123 noeud[GABEDIT_TYPENODE_GZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gauss zmat");
2124 noeud[GABEDIT_TYPENODE_MZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac zmat");
2125 noeud[GABEDIT_TYPENODE_HIN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Hyperchem");
2126 noeud[GABEDIT_TYPENODE_OTHER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Others");
2127
2128 for(i=0;i<Nfiles;i++) AddFeuille(GTK_TREE_VIEW(treeViewProjects),noeud[AllFiles[i]->itype],AllFiles[i]);
2129
2130 for(i=0;i<NBNOD;i++)
2131 if(expanded[i])
2132 {
2133 gchar* pathString = g_strdup_printf("%d", i);
2134 if(gtk_tree_model_get_iter_from_string (model, &iter, pathString) == TRUE)
2135 {
2136 GtkTreePath *path = gtk_tree_path_new_from_string (pathString);
2137 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(treeViewProjects), path);
2138 gtk_tree_path_free(path);
2139 }
2140 g_free(pathString);
2141 }
2142 }
2143 /********************************************************************************/
tree_clear(GtkTreeIter * parent,gint ifile)2144 static GtkTreeIter *tree_clear(GtkTreeIter *parent,gint ifile)
2145 {
2146 int i;
2147 int in = 0;
2148 gboolean expanded[NBNOD];
2149 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
2150 gchar* pathString;
2151 GtkTreeStore *store = GTK_TREE_STORE (model);
2152 GtkTreeIter iter;
2153
2154 for(i=0;i<NBNOD;i++)
2155 {
2156 expanded[i] = FALSE;
2157 if (noeud[i] == NULL) continue;
2158 pathString = g_strdup_printf("%d", i);
2159 if(gtk_tree_model_get_iter_from_string (model, &iter, pathString) == TRUE)
2160 {
2161 GtkTreePath *path = gtk_tree_path_new_from_string (pathString);
2162 expanded[i] = gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeViewProjects), path);
2163 gtk_tree_path_free(path);
2164 }
2165 g_free(pathString);
2166 }
2167
2168 for(i=0;i<NBNOD;i++)
2169 if(noeud[i]==parent)
2170 {
2171 in=i;
2172 break;
2173 }
2174 if(AllFiles == NULL) return parent;
2175
2176 gtk_tree_store_clear(store);
2177
2178 tree_data_destroy (AllFiles[ifile]);
2179
2180 noeud[GABEDIT_TYPENODE_DEMON]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"DeMon");
2181 noeud[GABEDIT_TYPENODE_FIREFLY]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"FireFly");
2182 noeud[GABEDIT_TYPENODE_GAMESS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gamess");
2183 noeud[GABEDIT_TYPENODE_GAUSSIAN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gaussian");
2184 noeud[GABEDIT_TYPENODE_MOLCAS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molcas");
2185 noeud[GABEDIT_TYPENODE_MOLPRO]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molpro");
2186 noeud[GABEDIT_TYPENODE_MOPAC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac");
2187 noeud[GABEDIT_TYPENODE_MPQC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"MPQC");
2188 noeud[GABEDIT_TYPENODE_NWCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"NWChem");
2189 noeud[GABEDIT_TYPENODE_PSICODE]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Psicode");
2190 noeud[GABEDIT_TYPENODE_ORCA]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"ORCA");
2191 noeud[GABEDIT_TYPENODE_QCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Q-Chem");
2192 noeud[GABEDIT_TYPENODE_GABEDIT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gabedit");
2193 noeud[GABEDIT_TYPENODE_XYZ]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"XYZ");
2194 noeud[GABEDIT_TYPENODE_MOL2]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mol2");
2195 noeud[GABEDIT_TYPENODE_PDB]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"PDB");
2196 noeud[GABEDIT_TYPENODE_TINKER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Tinker");
2197 noeud[GABEDIT_TYPENODE_GZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gauss zmat");
2198 noeud[GABEDIT_TYPENODE_MZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac zmat");
2199 noeud[GABEDIT_TYPENODE_HIN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Hyperchem");
2200 noeud[GABEDIT_TYPENODE_OTHER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Others");
2201
2202 for(i=0;i<Nfiles;i++) AddFeuille(GTK_TREE_VIEW(treeViewProjects),noeud[AllFiles[i]->itype],AllFiles[i]);
2203
2204 for(i=0;i<NBNOD;i++)
2205 if(expanded[i])
2206 {
2207 gchar* pathString = g_strdup_printf("%d", i);
2208 if(gtk_tree_model_get_iter_from_string (model, &iter, pathString) == TRUE)
2209 {
2210 GtkTreePath *path = gtk_tree_path_new_from_string (pathString);
2211 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(treeViewProjects), path);
2212 gtk_tree_path_free(path);
2213 }
2214 g_free(pathString);
2215 }
2216
2217 return noeud[in];
2218
2219 }
2220 /********************************************************************************/
tree_data_destroy(DataTree * pfd)2221 static void tree_data_destroy (DataTree* pfd)
2222 {
2223 int ifn=0;
2224 int i;
2225 DataTree** tmp=NULL;
2226
2227
2228 if(AllFiles == NULL)
2229 return;
2230 if(pfd == NULL)
2231 return;
2232
2233 if(pfd->projectname) g_free(pfd->projectname);
2234 if(pfd->localdir) g_free(pfd->localdir);
2235 if(pfd->remotehost) g_free(pfd->remotehost);
2236 if(pfd->remoteuser) g_free(pfd->remoteuser);
2237 if(pfd->remotepass) g_free(pfd->remotepass);
2238 if(pfd->remotedir) g_free(pfd->remotedir);
2239 if(pfd->command) g_free(pfd->command);
2240
2241 pfd->noeud=NULL;
2242 pfd->projectname=g_strdup("DELETED");
2243
2244 if(Nfiles>1) tmp = g_malloc((Nfiles-1)*sizeof(DataTree*));
2245 else
2246 {
2247 Nfiles--;
2248 if(AllFiles) g_free(AllFiles);
2249 AllFiles = NULL;
2250 return;
2251 }
2252 ifn =0;
2253 for(i=0;i<Nfiles;i++)
2254 if(AllFiles[i] != pfd)
2255 {
2256 tmp[ifn]=AllFiles[i];
2257 ifn++;
2258 }
2259
2260 Nfiles--;
2261
2262 if(AllFiles) g_free(AllFiles);
2263 AllFiles = tmp;
2264
2265 }
2266 /********************************************************************************/
tree_data_new(gchar * projectname,gchar * datafile,gchar * localdir,gchar * remotehost,gchar * remoteuser,gchar * remotepass,gchar * remotedir,gint itype,gchar * command,GabEditNetWork netWorkProtocol)2267 static DataTree* tree_data_new (gchar *projectname,gchar* datafile,gchar* localdir,
2268 gchar* remotehost,gchar* remoteuser,gchar* remotepass,gchar* remotedir,gint itype, gchar* command, GabEditNetWork netWorkProtocol)
2269 {
2270 DataTree *pfd;
2271
2272 pfd = g_malloc (sizeof (DataTree));
2273
2274 pfd->projectname = g_strdup(projectname);
2275 pfd->datafile = g_strdup(datafile);
2276 pfd->localdir = g_strdup(localdir);
2277 if(remotehost) pfd->remotehost = g_strdup(remotehost);
2278 else pfd->remotehost = g_strdup("");
2279
2280 if(remoteuser) pfd->remoteuser = g_strdup(remoteuser);
2281 else pfd->remoteuser = g_strdup("");
2282
2283 if(remotepass) pfd->remotepass = g_strdup(remotepass);
2284 else pfd->remotepass = g_strdup("");
2285
2286 if(remotedir) pfd->remotedir = g_strdup(remotedir);
2287 else pfd->remotedir = g_strdup("");
2288
2289 if(command) pfd->command = g_strdup(command);
2290 else pfd->command = g_strdup("");
2291
2292 pfd->itype =itype;
2293 pfd->netWorkProtocol = netWorkProtocol;
2294
2295 return pfd;
2296 }
2297 /********************************************************************************/
CreeNoeud(GtkTreeView * treeView,gchar * text)2298 static GtkTreeIter* CreeNoeud(GtkTreeView *treeView,gchar *text)
2299 {
2300 gchar* t = g_strdup(text);
2301 GtkTreeIter* node = g_malloc(sizeof(GtkTreeIter));
2302 GtkTreeModel *model;
2303 GtkTreeStore *store;
2304 GdkColor nodeColor;
2305
2306 nodeColor.red = 0;
2307 nodeColor.green = 0;
2308 nodeColor.blue = 65535;
2309
2310 model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeView));
2311 store = GTK_TREE_STORE (model);
2312
2313 gtk_tree_store_append(store, node, NULL);
2314 uppercase(t);
2315 gtk_tree_store_set (store, node, LIST_NAME, t, -1);
2316 if(strstr(t,"FIREFLY")) gtk_tree_store_set (store, node, LIST_PIXBUF, fireflyPixbuf, -1);
2317 else
2318 if(strstr(t,"GAMESS")) gtk_tree_store_set (store, node, LIST_PIXBUF, gamessPixbuf, -1);
2319 else
2320 if(strstr(t,"DEMON")) gtk_tree_store_set (store, node, LIST_PIXBUF, demonPixbuf, -1);
2321 else
2322 if(strstr(t,"GAUSSIAN")) gtk_tree_store_set (store, node, LIST_PIXBUF, gaussianPixbuf, -1);
2323 else
2324 if(strstr(t,"MOLCAS")) gtk_tree_store_set (store, node, LIST_PIXBUF, molcasPixbuf, -1);
2325 else
2326 if(strstr(t,"MOLPRO")) gtk_tree_store_set (store, node, LIST_PIXBUF, molproPixbuf, -1);
2327 else
2328 if(strstr(t,"MPQC")) gtk_tree_store_set (store, node, LIST_PIXBUF, mpqcPixbuf, -1);
2329 else
2330 if(strstr(t,"NWCHEM")) gtk_tree_store_set (store, node, LIST_PIXBUF, nwchemPixbuf, -1);
2331 else
2332 if(strstr(t,"PSICODE")) gtk_tree_store_set (store, node, LIST_PIXBUF, psicodePixbuf, -1);
2333 else
2334 if(strstr(t,"ORCA")) gtk_tree_store_set (store, node, LIST_PIXBUF, orcaPixbuf, -1);
2335 else
2336 if(strstr(t,"Q-CHEM")) gtk_tree_store_set (store, node, LIST_PIXBUF, qchemPixbuf, -1);
2337 else
2338 if(strstr(t,"MOPAC Z")) gtk_tree_store_set (store, node, LIST_PIXBUF, bookPixbuf, -1);
2339 else
2340 if(strstr(t,"MOPAC")) gtk_tree_store_set (store, node, LIST_PIXBUF, mopacPixbuf, -1);
2341 else
2342 if(strstr(t,"GABEDIT")) gtk_tree_store_set (store, node, LIST_PIXBUF, gabeditPixbuf, -1);
2343 else
2344 gtk_tree_store_set (store, node, LIST_PIXBUF, bookPixbuf, -1);
2345
2346 gtk_tree_store_set (store, node, LIST_NODE_FOREGROUND_COLOR, &nodeColor, -1);
2347 gtk_tree_store_set (store, node, LIST_DATA, NULL, -1);
2348 g_free(t);
2349 return node;
2350 }
2351 /********************************************************************************/
file_in_list(gchar * projectname,gchar * datafile,gchar * localdir,gint itype)2352 static int file_in_list(gchar *projectname,gchar*datafile,gchar* localdir,gint itype)
2353 {
2354 int i;
2355 for(i=0;i<Nfiles;i++)
2356 if( !strcmp(localdir,AllFiles[i]->localdir) &&
2357 !strcmp(projectname,AllFiles[i]->projectname) &&
2358 !strcmp(datafile,AllFiles[i]->datafile) &&
2359 itype == AllFiles[i]->itype)
2360 {
2361 if(AllFiles[i]->remotehost)
2362 g_free(AllFiles[i]->remotehost);
2363 if(fileopen.remotehost)
2364 AllFiles[i]->remotehost = g_strdup(fileopen.remotehost);
2365 else
2366 AllFiles[i]->remotehost =NULL;
2367 if(fileopen.remoteuser)
2368 AllFiles[i]->remoteuser = g_strdup(fileopen.remoteuser);
2369 else
2370 AllFiles[i]->remoteuser =g_strdup("");
2371 if(fileopen.remotepass)
2372 AllFiles[i]->remotepass = g_strdup(fileopen.remotepass);
2373 else
2374 AllFiles[i]->remotepass =g_strdup("");
2375 if(fileopen.remotedir)
2376 AllFiles[i]->remotedir = g_strdup(fileopen.remotedir);
2377 else
2378 AllFiles[i]->remotedir =g_strdup("");
2379 if(fileopen.command)
2380 AllFiles[i]->command = g_strdup(fileopen.command);
2381 else
2382 AllFiles[i]->command =g_strdup("");
2383 return i;
2384 }
2385 return -1;
2386 }
2387 /********************************************************************************/
AddFeuille(GtkTreeView * treeView,GtkTreeIter * parent,DataTree * pfd)2388 static void AddFeuille(GtkTreeView *treeView, GtkTreeIter *parent,DataTree *pfd)
2389 {
2390 GtkTreeIter feuille;
2391 gchar *text;
2392 GtkTreeModel *model;
2393 GtkTreeStore *store;
2394
2395 model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeView));
2396 store = GTK_TREE_STORE (model);
2397
2398 text = g_strdup(pfd->projectname);
2399
2400 gtk_tree_store_append(store, &feuille, parent);
2401 gtk_tree_store_set (store, &feuille, LIST_PIXBUF, pagePixbuf, -1);
2402 gtk_tree_store_set (store, &feuille, LIST_NAME, text, -1);
2403 pfd->noeud = &feuille;
2404 gtk_tree_store_set (store, &feuille, LIST_DATA, pfd, -1);
2405
2406 g_free(text);
2407 }
2408 /********************************************************************************/
CreeFeuille(GtkWidget * treeView,GtkTreeIter * parent,gchar * projectname,gchar * datafile,gchar * localdir,gchar * remotehost,gchar * remoteuser,gchar * remotepass,gchar * remotedir,gint itype,gchar * command,GabEditNetWork netWorkProtocol)2409 void CreeFeuille(GtkWidget *treeView, GtkTreeIter *parent,gchar* projectname,gchar*datafile,gchar* localdir,
2410 gchar* remotehost,gchar* remoteuser,gchar* remotepass,gchar* remotedir,gint itype, gchar* command, GabEditNetWork netWorkProtocol)
2411 {
2412 DataTree* pfd;
2413 int ifile = file_in_list(projectname,datafile,localdir,itype);
2414
2415 if( itype<0 || itype>=NBNOD) return;
2416 if( ifile != -1 )
2417 {
2418 if(AllFiles[ifile]->itype==iprogram) return;
2419 else parent=tree_clear(parent,ifile);
2420 }
2421 pfd = tree_data_new (projectname,datafile,localdir,remotehost,remoteuser,remotepass,remotedir,itype, command, netWorkProtocol);
2422
2423 AddFeuille(GTK_TREE_VIEW(treeView),parent,pfd);
2424
2425 if(Nfiles==0) AllFiles = g_malloc(sizeof(DataTree*));
2426 else AllFiles = (DataTree**)g_realloc(AllFiles,(Nfiles+1)*sizeof(DataTree*));
2427 Nfiles++;
2428 AllFiles[Nfiles-1] = pfd;
2429 }
2430 /********************************************************************************/
clear_one_project()2431 static void clear_one_project()
2432 {
2433 int ifile = -1;
2434 GtkTreeIter node;
2435 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
2436 DataTree* data = NULL;
2437
2438 if(atoi(selectedRow)<0) return;
2439 if(!gtk_tree_model_get_iter_from_string (model, &node, selectedRow)) return;
2440 gtk_tree_model_get (model, &node, LIST_DATA, &data, -1);
2441
2442 if(!data) return;
2443 if( data->itype<0 || data->itype>=NBNOD) return;
2444 ifile = file_in_list(data->projectname, data->datafile, data->localdir, data->itype);
2445
2446 if( ifile != -1 )
2447 {
2448 GtkTreeIter* parent;
2449 parent = noeud[data->itype];
2450 parent = tree_clear(parent,ifile);
2451 }
2452 }
2453 /********************************************************************************/
to_clear_lists(GtkWidget * wid,gpointer data)2454 static void to_clear_lists(GtkWidget *wid,gpointer data)
2455 {
2456 gint i;
2457 gint k = 0;
2458 for(i=0;i<NBNOD;i++)
2459 if (GTK_TOGGLE_BUTTON (checkbutton[i])->active)
2460 k++;
2461 if(k == NBNOD)
2462 tree_clear_all();
2463 else
2464 if(k != 0)
2465 for(i=0;i<NBNOD;i++)
2466 if (GTK_TOGGLE_BUTTON (checkbutton[i])->active)
2467 tree_clear_one(i);
2468
2469 }
2470 /********************************************************************************/
select_all_buttons(GtkWidget * wid,gpointer data)2471 static void select_all_buttons(GtkWidget *wid,gpointer data)
2472 {
2473 gint i;
2474 for(i=0;i<NBNOD;i++)
2475 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton[i]), TRUE);
2476 }
2477 /********************************************************************************/
unselect_all_buttons(GtkWidget * wid,gpointer data)2478 static void unselect_all_buttons(GtkWidget *wid,gpointer data)
2479 {
2480 gint i;
2481 for(i=0;i<NBNOD;i++)
2482 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton[i]), FALSE);
2483 }
2484 /********************************************************************************/
create_window_list_to_clear()2485 static void create_window_list_to_clear()
2486 {
2487 guint i;
2488 GtkWidget *frame;
2489 GtkWidget *vbox;
2490 GtkWidget *hbox;
2491 GtkWidget *Dialogue;
2492 GtkWidget *button;
2493 gchar * title = N_("Clear list of projects");
2494 gchar *buttonlabel[NBNOD]={
2495 "deMon2k list",
2496 "FireFly list",
2497 "Gamess list",
2498 "Gaussian list",
2499 "Molcas list",
2500 "Molpro list",
2501 "Mopac list",
2502 "MPQC list",
2503 "NWChem list",
2504 "Psicode list",
2505 "Orca list",
2506 "Q-Chem list",
2507 "Gabedit list",
2508 "xyz list",
2509 "Mol2 list",
2510 "PDB list",
2511 "Tinker list",
2512 "Gaussian z-matrix list",
2513 "Mopac z-matrix list",
2514 "HyperChem (hin) list",
2515 "Other files list",
2516 };
2517 GtkWidget *ButtonSelAll;
2518 GtkWidget *ButtonUnSelAll;
2519
2520 for(i=0;i<NBNOD;i++)
2521 checkbutton[i]=NULL;
2522
2523 Dialogue = gtk_dialog_new();
2524 gtk_widget_realize(GTK_WIDGET(Dialogue));
2525 gtk_window_set_title(GTK_WINDOW(Dialogue),title);
2526 gtk_window_set_transient_for(GTK_WINDOW(Dialogue),GTK_WINDOW(Fenetre));
2527 gtk_window_set_position(GTK_WINDOW(Dialogue),GTK_WIN_POS_CENTER);
2528
2529 g_signal_connect(G_OBJECT(Dialogue),"delete_event",(GCallback)destroy_button_windows,NULL);
2530 g_signal_connect(G_OBJECT(Dialogue),"delete_event",(GCallback)gtk_widget_destroy,NULL);
2531
2532 frame = gtk_frame_new (title);
2533 gtk_widget_show (frame);
2534 gtk_box_pack_start (GTK_BOX (GTK_DIALOG(Dialogue)->vbox), frame, TRUE, TRUE, 8);
2535 gtk_frame_set_label_align (GTK_FRAME (frame), 0.5, 0.5);
2536
2537 vbox = gtk_vbox_new (TRUE, 0);
2538 gtk_widget_show (vbox);
2539 gtk_container_add (GTK_CONTAINER (frame), vbox);
2540
2541 /* Select all and unselect all */
2542 hbox = gtk_hbox_new (TRUE, 0);
2543 gtk_widget_show (hbox);
2544 gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
2545
2546 ButtonUnSelAll = gtk_radio_button_new_with_label( NULL,_(" Unselect all") );
2547 gtk_box_pack_end (GTK_BOX (hbox), ButtonUnSelAll, TRUE, TRUE, 0);
2548 gtk_widget_show (ButtonUnSelAll);
2549
2550 ButtonSelAll = gtk_radio_button_new_with_label(
2551 gtk_radio_button_get_group (GTK_RADIO_BUTTON (ButtonUnSelAll)),
2552 _("Select all "));
2553 gtk_box_pack_start (GTK_BOX (hbox), ButtonSelAll, TRUE, TRUE, 0);
2554 gtk_widget_show (ButtonSelAll);
2555 create_hseparator(vbox);
2556
2557 for(i=0;i<NBNOD;i++)
2558 {
2559 checkbutton[i] = gtk_check_button_new_with_label (buttonlabel[i]);
2560 gtk_widget_show (checkbutton[i]);
2561 gtk_box_pack_start (GTK_BOX (vbox), checkbutton[i], FALSE, FALSE, 0);
2562 }
2563 g_signal_connect(G_OBJECT(ButtonSelAll), "clicked",(GCallback)select_all_buttons,NULL);
2564 g_signal_connect(G_OBJECT(ButtonUnSelAll), "clicked",(GCallback)unselect_all_buttons,NULL);
2565 gtk_box_set_homogeneous (GTK_BOX( GTK_DIALOG(Dialogue)->action_area), FALSE);
2566
2567 /* The CANCEL button */
2568 button = create_button(Dialogue,_("Cancel"));
2569 gtk_box_pack_end (GTK_BOX( GTK_DIALOG(Dialogue)->action_area), button, FALSE, TRUE, 5);
2570 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
2571 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)destroy_button_windows,GTK_OBJECT(Dialogue));
2572 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)gtk_widget_destroy,GTK_OBJECT(Dialogue));
2573
2574 /* The OK button */
2575 button = create_button(Dialogue,"OK");
2576 gtk_box_pack_start (GTK_BOX( GTK_DIALOG(Dialogue)->action_area), button, FALSE, TRUE, 5);
2577 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
2578 gtk_widget_grab_default(button);
2579 g_signal_connect(G_OBJECT(button), "clicked",(GCallback)to_clear_lists,NULL);
2580 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)destroy_button_windows,GTK_OBJECT(Dialogue));
2581 g_signal_connect_swapped(G_OBJECT(button), "clicked",(GCallback)gtk_widget_destroy,GTK_OBJECT(Dialogue));
2582
2583
2584 if(atoi(selectedRow)>-1)
2585 {
2586 gint i;
2587 GtkTreeIter node;
2588 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeViewProjects));
2589 gtk_tree_model_get_iter_from_string (model, &node, selectedRow);
2590 GtkTreePath* path1 = gtk_tree_model_get_path(model, &node);
2591 GtkTreePath* path2;
2592
2593 gboolean Ok = FALSE;
2594 for(i=0;i<NBNOD;i++)
2595 {
2596 path2 = gtk_tree_model_get_path(model, noeud[i]);
2597 if(gtk_tree_path_compare(path1, path2)==0)
2598 {
2599 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton[i]), TRUE);
2600 Ok = TRUE;
2601 break;
2602 }
2603 gtk_tree_path_free(path2);
2604 }
2605 gtk_tree_path_free(path1);
2606 if(!Ok)
2607 {
2608 DataTree* p;
2609 gtk_tree_model_get (model, &node, LIST_DATA, &p, -1);
2610 if(p)
2611 {
2612 if( p->itype>= 0 && p->itype<NBNOD)
2613 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton[p->itype]), TRUE);
2614 }
2615 }
2616 }
2617
2618 add_button_windows(title,Dialogue);
2619 gtk_widget_show_all(Dialogue);
2620
2621 }
2622 /********************************************************************************/
ListeFiles(GtkWidget * vbox)2623 void ListeFiles(GtkWidget* vbox)
2624 {
2625 GtkWidget *Scr;
2626 GtkUIManager *manager = NULL;
2627 GtkTreeStore *store;
2628 GtkTreeModel *model;
2629 GtkCellRenderer *renderer;
2630 GtkTreeViewColumn *column;
2631
2632 set_pixbuf();
2633
2634 Scr = gtk_scrolled_window_new(NULL, NULL);
2635 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (Scr), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2636 gtk_container_add(GTK_CONTAINER(vbox), Scr);
2637 gtk_widget_set_size_request(Scr, (gint)(ScreenHeight*0.15), (gint)(ScreenHeight*0.1));
2638 FrameList = vbox;
2639
2640 store = gtk_tree_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_COLOR, G_TYPE_POINTER);
2641 model = GTK_TREE_MODEL (store);
2642
2643 treeViewProjects = gtk_tree_view_new_with_model (model);
2644 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeViewProjects), TRUE);
2645 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeViewProjects), TRUE);
2646
2647 column = gtk_tree_view_column_new ();
2648 gtk_tree_view_column_set_title (column, _("Recent Projects"));
2649 gtk_tree_view_column_set_reorderable(column, TRUE);
2650
2651 renderer = gtk_cell_renderer_pixbuf_new ();
2652 gtk_tree_view_column_pack_start (column, renderer, FALSE);
2653 gtk_tree_view_column_add_attribute (column, renderer, "pixbuf", LIST_PIXBUF);
2654
2655 renderer = gtk_cell_renderer_text_new ();
2656 gtk_tree_view_column_pack_start (column, renderer, TRUE);
2657 gtk_tree_view_column_add_attribute (column, renderer, "text", LIST_NAME);
2658 gtk_tree_view_column_add_attribute (column, renderer, "foreground_gdk", LIST_NODE_FOREGROUND_COLOR);
2659
2660 gtk_tree_view_append_column (GTK_TREE_VIEW (treeViewProjects), column);
2661
2662 gtk_container_add(GTK_CONTAINER(Scr), treeViewProjects);
2663
2664 noeud[GABEDIT_TYPENODE_DEMON]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"DeMon");
2665 noeud[GABEDIT_TYPENODE_FIREFLY]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"FireFly");
2666 noeud[GABEDIT_TYPENODE_GAMESS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gamess");
2667 noeud[GABEDIT_TYPENODE_GAUSSIAN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gaussian");
2668 noeud[GABEDIT_TYPENODE_MOLCAS]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molcas");
2669 noeud[GABEDIT_TYPENODE_MOLPRO]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Molpro");
2670 noeud[GABEDIT_TYPENODE_MOPAC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac");
2671 noeud[GABEDIT_TYPENODE_MPQC]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"MPQC");
2672 noeud[GABEDIT_TYPENODE_NWCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"NWChem");
2673 noeud[GABEDIT_TYPENODE_PSICODE]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Psicode");
2674 noeud[GABEDIT_TYPENODE_ORCA]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"ORCA");
2675 noeud[GABEDIT_TYPENODE_QCHEM]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Q-Chem");
2676 noeud[GABEDIT_TYPENODE_GABEDIT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gabedit");
2677 noeud[GABEDIT_TYPENODE_XYZ]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"XYZ");
2678 noeud[GABEDIT_TYPENODE_MOL2]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mol2");
2679 noeud[GABEDIT_TYPENODE_PDB]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"PDB");
2680 noeud[GABEDIT_TYPENODE_TINKER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Tinker");
2681 noeud[GABEDIT_TYPENODE_GZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Gauss zmat");
2682 noeud[GABEDIT_TYPENODE_MZMAT]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Mopac zmat");
2683 noeud[GABEDIT_TYPENODE_HIN]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Hyperchem");
2684 noeud[GABEDIT_TYPENODE_OTHER]=CreeNoeud(GTK_TREE_VIEW(treeViewProjects),"Others");
2685
2686 add_liste_files();
2687
2688 manager = create_menu(Fenetre);
2689 g_signal_connect(treeViewProjects, "button_press_event", G_CALLBACK(event_dispatcher), manager);
2690 }
2691 /********************************************************************************/
2692