1
/* $Id: menucallbacks.c,v 1.3 2008/03/04 17:54:51 arif Exp $ $Revision: 1.3 $ */
2
/* vim:set shiftwidth=4 ts=8: */
4
/**********************************************************
5
* This software is part of the graphviz package *
6
* http://www.graphviz.org/ *
8
* Copyright (c) 1994-2004 AT&T Corp. *
9
* and is licensed under the *
10
* Common Public License, Version 1.0 *
13
* Information and Software Systems Research *
14
* AT&T Research, Florham Park NJ *
15
**********************************************************/
17
#include "menucallbacks.h"
20
#include "selection.h"
25
void mNewSlot (GtkWidget *widget,gpointer user_data)
29
void mOpenSlot (GtkWidget *widget,gpointer user_data)
32
GtkFileFilter* filter;
35
filter=gtk_file_filter_new ();
36
gtk_file_filter_add_pattern(filter,"*.dot");
37
dialog = gtk_file_chooser_dialog_new ("Open File",
39
GTK_FILE_CHOOSER_ACTION_OPEN,
40
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
41
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
44
gtk_file_chooser_set_filter((GtkFileChooser*)dialog,filter);
45
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
48
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
49
add_graph_to_viewport_from_file (filename);
53
gtk_widget_destroy (dialog);
54
gtk_widget_destroy ((GtkWidget*)filter);
56
void mSaveSlot (GtkWidget *widget,gpointer user_data)
59
save_graph(); //save without prompt
62
void mSaveAsSlot (GtkWidget *widget,gpointer user_data)
64
save_as_graph(); //save with prompt
66
void mOptionsSlot (GtkWidget *widget,gpointer user_data)
70
void mQuitSlot (GtkWidget *widget,gpointer user_data)
72
//1 check all graphs 1 by 1 to see any unsaved
75
int active_graph=view->activeGraph ; //stores the active graph in case quit aborted
76
for (gIndex ; gIndex < view->graphCount ; gIndex++)
78
view->activeGraph=gIndex;
79
if(((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->Modified)
81
sprintf(buf,"graph %s has been modified \n , would you like to save it before quitting the the program?",((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->GraphName);
82
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
87
gtk_dialog_add_button ((GtkDialog*)Dlg,"YES",100);
88
gtk_dialog_add_button ((GtkDialog*)Dlg,"NO",101);
89
gtk_dialog_add_button ((GtkDialog*)Dlg,"Cancel",102);
91
respond=gtk_dialog_run ((GtkDialog*)Dlg);
92
if (respond == 100) //save and continue
97
if (respond == 102) //save and continue
108
void mCutSlot (GtkWidget *widget,gpointer user_data)
112
void mCopySlot (GtkWidget *widget,gpointer user_data)
116
void mPasteSlot (GtkWidget *widget,gpointer user_data)
120
void mDeleteSlot (GtkWidget *widget,gpointer user_data)
127
void mShowToolBoxSlot(GtkWidget *widget,gpointer user_data)
130
gtk_widget_hide(glade_xml_get_widget(xml, "frmToolBox"));
131
gtk_widget_show(glade_xml_get_widget(xml, "frmToolBox"));
132
gtk_window_set_keep_above ((GtkWindow*)glade_xml_get_widget(xml, "frmToolBox"),1);
135
void mShowHostSelectionSlot(GtkWidget *widget,gpointer user_data)
138
gtk_widget_hide(glade_xml_get_widget(xml, "frmHostSelection"));
139
gtk_widget_show(glade_xml_get_widget(xml, "frmHostSelection"));
140
gtk_window_set_keep_above ((GtkWindow*)glade_xml_get_widget(xml, "frmHostSelection"),1);
146
void mNodeListSlot (GtkWidget *widget,gpointer user_data)
151
void mNewNodeSlot (GtkWidget *widget,gpointer user_data)
155
void mNewEdgeSlot (GtkWidget *widget,gpointer user_data)
158
void mNewClusterSlot (GtkWidget *widget,gpointer user_data)
162
void mGraphPropertiesSlot (GtkWidget *widget,gpointer user_data)
165
//there has to be an active graph to open the graph prop page
166
if(view->activeGraph > -1)
168
load_graph_properties(view->g[view->activeGraph]);//load from graph to gui
169
gtk_dialog_set_response_sensitive ((GtkDialog*)glade_xml_get_widget(xml, "dlgOpenGraph"),1,1);
170
gtk_dialog_set_response_sensitive ((GtkDialog*)glade_xml_get_widget(xml, "dlgOpenGraph"),2,1);
171
respond=gtk_dialog_run ((GtkDialog*)glade_xml_get_widget(xml, "dlgOpenGraph"));
172
//need to hide the dialog , again freaking GTK!!!!
173
gtk_widget_hide(glade_xml_get_widget(xml, "dlgOpenGraph"));
176
void mClusterPropertiesSlot (GtkWidget *widget,gpointer user_data)
178
if( ((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->selectedGraphsCount > 0)
180
gtk_widget_hide(glade_xml_get_widget(xml, "frmObject"));
181
gtk_widget_show(glade_xml_get_widget(xml, "frmObject"));
182
load_object_properties(1,view->g[view->activeGraph]);
186
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
188
GTK_MESSAGE_QUESTION,
190
"You need to select some clusters first!");
191
respond=gtk_dialog_run ((GtkDialog*)Dlg);
192
gtk_widget_hide((GtkWidget*)Dlg);
196
void mNodePropertiesSlot (GtkWidget *widget,gpointer user_data)
198
if( ((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->selectedNodesCount > 0)
200
gtk_widget_hide(glade_xml_get_widget(xml, "frmObject"));
201
gtk_widget_show(glade_xml_get_widget(xml, "frmObject"));
202
load_object_properties(2,view->g[view->activeGraph]);
206
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
208
GTK_MESSAGE_QUESTION,
210
"You need to select some nodes first!");
211
respond=gtk_dialog_run ((GtkDialog*)Dlg);
212
gtk_widget_hide((GtkWidget*)Dlg);
216
void mEdgePropertiesSlot (GtkWidget *widget,gpointer user_data)
218
if( ((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->selectedEdgesCount > 0)
220
gtk_widget_hide(glade_xml_get_widget(xml, "frmObject"));
221
gtk_widget_show(glade_xml_get_widget(xml, "frmObject"));
222
load_object_properties(3,view->g[view->activeGraph]);
226
Dlg =(GtkMessageDialog*) gtk_message_dialog_new (NULL,
228
GTK_MESSAGE_QUESTION,
230
"You need to select some Edges first!");
231
respond=gtk_dialog_run ((GtkDialog*)Dlg);
232
gtk_widget_hide((GtkWidget*)Dlg);
238
void mShowCodeSlot (GtkWidget *widget,gpointer user_data)
241
void mDotSlot (GtkWidget *widget,gpointer user_data)
245
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
247
GTK_MESSAGE_QUESTION,
249
"This will change the graph layout\n all your position changes will be lost\n Are you sure?");
251
respond=gtk_dialog_run ((GtkDialog*)Dlg);
252
if (respond == GTK_RESPONSE_YES)
253
do_graph_layout(view->g[view->activeGraph],0,0);
254
gtk_object_destroy ((GtkObject*)Dlg);
256
cursor = gdk_cursor_new(GDK_HAND2);
257
w=(GdkWindow*)glade_xml_get_widget(xml, "frmMain");
258
gdk_window_set_cursor ((GdkWindow*)view->drawing_area->window, cursor);
259
gdk_cursor_destroy(cursor);
262
void mNeatoSlot (GtkWidget *widget,gpointer user_data)
264
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
266
GTK_MESSAGE_QUESTION,
268
"This will change the graph layout\n all your position changes will be lost\n Are you sure?");
269
respond=gtk_dialog_run ((GtkDialog*)Dlg);
270
if (respond == GTK_RESPONSE_YES)
271
do_graph_layout(view->g[view->activeGraph],1,0);
272
gtk_object_destroy ((GtkObject*)Dlg);
275
void mTwopiSlot (GtkWidget *widget,gpointer user_data)
277
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
279
GTK_MESSAGE_QUESTION,
281
"This will change the graph layout\n all your position changes will be lost\n Are you sure?");
283
respond=gtk_dialog_run ((GtkDialog*)Dlg);
284
if (respond == GTK_RESPONSE_YES)
285
do_graph_layout(view->g[view->activeGraph],2,0);
286
gtk_object_destroy ((GtkObject*)Dlg);
290
void mCircoSlot (GtkWidget *widget,gpointer user_data)
292
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
294
GTK_MESSAGE_QUESTION,
296
"This will change the graph layout\n all your position changes will be lost\n Are you sure?");
298
respond=gtk_dialog_run ((GtkDialog*)Dlg);
299
if (respond == GTK_RESPONSE_YES)
300
do_graph_layout(view->g[view->activeGraph],3,0);
301
gtk_object_destroy ((GtkObject*)Dlg);
304
void mFdpSlot (GtkWidget *widget,gpointer user_data)
308
Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
310
GTK_MESSAGE_QUESTION,
312
"This will change the graph layout\n all your position changes will be lost\n Are you sure?");
314
respond=gtk_dialog_run ((GtkDialog*)Dlg);
315
if (respond == GTK_RESPONSE_YES)
316
do_graph_layout(view->g[view->activeGraph],4,0);
317
gtk_object_destroy ((GtkObject*)Dlg);
321
void mSelectAllSlot(GtkWidget *widget,gpointer user_data)
323
select_all(view->g[view->activeGraph]);
327
void mUnselectAllSlot(GtkWidget *widget,gpointer user_data)
329
deselect_all(view->g[view->activeGraph]);
332
void mSelectAllNodesSlot(GtkWidget *widget,gpointer user_data)
334
select_all_nodes(view->g[view->activeGraph]);
337
void mSelectAllEdgesSlot(GtkWidget *widget,gpointer user_data)
339
select_all_edges(view->g[view->activeGraph]);
342
void mSelectAllClustersSlot(GtkWidget *widget,gpointer user_data)
344
select_all_graphs(view->g[view->activeGraph]);
348
void mUnselectAllNodesSlot(GtkWidget *widget,gpointer user_data)
350
deselect_all_nodes(view->g[view->activeGraph]);
353
void mUnselectAllEdgesSlot(GtkWidget *widget,gpointer user_data)
355
deselect_all_edges(view->g[view->activeGraph]);
359
void mUnselectAllClustersSlot(GtkWidget *widget,gpointer user_data)
361
deselect_all_graphs(view->g[view->activeGraph]);
364
void mSingleSelectSlot(GtkWidget *widget,gpointer user_data)
368
void mSelectAreaSlot(GtkWidget *widget,gpointer user_data)
372
void mSelectAreaXSlot(GtkWidget *widget,gpointer user_data)
378
void mAbout(GtkWidget *widget,gpointer user_data)
382
void mHelp(GtkWidget *widget,gpointer user_data)