~ubuntu-branches/ubuntu/lucid/graphviz/lucid-updates

« back to all changes in this revision

Viewing changes to cmd/smyrna/gui/menucallbacks.c

  • Committer: Bazaar Package Importer
  • Author(s): Bryce Harrington
  • Date: 2008-06-19 20:23:23 UTC
  • mfrom: (1.2.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20080619202323-ls23h96ntj9ny94m
Tags: 2.18-1ubuntu1
* Merge from debian unstable, remaining changes:
  - Build depend on liblualib50-dev instead of liblua5.1-0-dev.
  - Drop libttf-dev (libttf-dev is in universe) (LP: #174749).
  - Replace gs-common with ghostscript.
  - Build-depend on python-dev instead of python2.4-dev or python2.5-dev.
  - Mention the correct python version for the python bindings in the
    package description.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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: */
 
3
 
 
4
/**********************************************************
 
5
*      This software is part of the graphviz package      *
 
6
*                http://www.graphviz.org/                 *
 
7
*                                                         *
 
8
*            Copyright (c) 1994-2004 AT&T Corp.           *
 
9
*                and is licensed under the                *
 
10
*            Common Public License, Version 1.0           *
 
11
*                      by AT&T Corp.                      *
 
12
*                                                         *
 
13
*        Information and Software Systems Research        *
 
14
*              AT&T Research, Florham Park NJ             *
 
15
**********************************************************/
 
16
 
 
17
#include "menucallbacks.h"
 
18
#include "viewport.h"
 
19
#include "tvnodes.h"
 
20
#include "selection.h"
 
21
 
 
22
 
 
23
//file
 
24
char buf[255];
 
25
void mNewSlot (GtkWidget *widget,gpointer user_data)
 
26
{
 
27
}
 
28
 
 
29
  void mOpenSlot (GtkWidget *widget,gpointer user_data)
 
30
{
 
31
        GtkWidget *dialog;
 
32
        GtkFileFilter* filter;
 
33
 
 
34
 
 
35
        filter=gtk_file_filter_new ();
 
36
        gtk_file_filter_add_pattern(filter,"*.dot");
 
37
        dialog = gtk_file_chooser_dialog_new ("Open File",
 
38
                                      NULL,
 
39
                                      GTK_FILE_CHOOSER_ACTION_OPEN,
 
40
                                      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 
41
                                      GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
 
42
                                      NULL);
 
43
 
 
44
        gtk_file_chooser_set_filter((GtkFileChooser*)dialog,filter);
 
45
        if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
 
46
          {
 
47
                char *filename;
 
48
            filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
49
                add_graph_to_viewport_from_file (filename);
 
50
            g_free (filename);
 
51
        }
 
52
        
 
53
        gtk_widget_destroy (dialog);
 
54
        gtk_widget_destroy ((GtkWidget*)filter);
 
55
}
 
56
  void mSaveSlot (GtkWidget *widget,gpointer user_data)
 
57
{
 
58
        
 
59
        save_graph();   //save without prompt
 
60
 
 
61
}
 
62
  void mSaveAsSlot (GtkWidget *widget,gpointer user_data)
 
63
{
 
64
        save_as_graph(); //save with prompt
 
65
}
 
66
  void mOptionsSlot (GtkWidget *widget,gpointer user_data)
 
67
{
 
68
}
 
69
 
 
70
  void mQuitSlot (GtkWidget *widget,gpointer user_data)
 
71
{
 
72
        //1 check all graphs 1 by 1 to see any unsaved
 
73
        int respond;
 
74
        int gIndex=0;
 
75
        int active_graph=view->activeGraph ; //stores the active graph in case quit aborted
 
76
        for (gIndex ; gIndex < view->graphCount ; gIndex++)
 
77
        {
 
78
                view->activeGraph=gIndex;
 
79
                if(((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->Modified)
 
80
                {
 
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,
 
83
                                                                GTK_DIALOG_MODAL,
 
84
                                  GTK_MESSAGE_QUESTION,
 
85
                                  GTK_BUTTONS_NONE,
 
86
                                  buf);
 
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);
 
90
                        
 
91
                        respond=gtk_dialog_run ((GtkDialog*)Dlg);
 
92
                        if (respond == 100)     //save and continue
 
93
                        {
 
94
                                if(!save_graph())
 
95
                                        break;
 
96
                        }
 
97
                        if (respond == 102)     //save and continue
 
98
                        {
 
99
                                        break;
 
100
                        }
 
101
                }
 
102
        }
 
103
        gtk_main_quit();
 
104
}
 
105
 
 
106
 
 
107
//edit
 
108
  void mCutSlot (GtkWidget *widget,gpointer user_data)
 
109
{
 
110
}
 
111
 
 
112
  void mCopySlot (GtkWidget *widget,gpointer user_data)
 
113
{
 
114
}
 
115
 
 
116
  void mPasteSlot (GtkWidget *widget,gpointer user_data)
 
117
{
 
118
}
 
119
 
 
120
  void mDeleteSlot (GtkWidget *widget,gpointer user_data)
 
121
{
 
122
}
 
123
 
 
124
 
 
125
 
 
126
//view
 
127
  void mShowToolBoxSlot(GtkWidget *widget,gpointer user_data)
 
128
{
 
129
                
 
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);
 
133
        
 
134
}
 
135
void mShowHostSelectionSlot(GtkWidget *widget,gpointer user_data)
 
136
{
 
137
                
 
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);
 
141
        
 
142
}
 
143
 
 
144
 
 
145
//Graph
 
146
  void mNodeListSlot (GtkWidget *widget,gpointer user_data)
 
147
{
 
148
        execute_tv_nodes();
 
149
}
 
150
 
 
151
  void mNewNodeSlot (GtkWidget *widget,gpointer user_data)
 
152
{
 
153
}
 
154
 
 
155
  void mNewEdgeSlot (GtkWidget *widget,gpointer user_data)
 
156
{
 
157
}
 
158
  void mNewClusterSlot (GtkWidget *widget,gpointer user_data)
 
159
{
 
160
}
 
161
 
 
162
  void mGraphPropertiesSlot (GtkWidget *widget,gpointer user_data)
 
163
{
 
164
        int respond;
 
165
        //there has to be an active graph to open the graph prop page
 
166
        if(view->activeGraph > -1)
 
167
        {
 
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"));
 
174
        }
 
175
}
 
176
  void mClusterPropertiesSlot (GtkWidget *widget,gpointer user_data)
 
177
{
 
178
        if(  ((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->selectedGraphsCount > 0)
 
179
        {
 
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]);
 
183
        }
 
184
        else
 
185
        {
 
186
                Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
187
                                                                GTK_DIALOG_MODAL,
 
188
                                  GTK_MESSAGE_QUESTION,
 
189
                                  GTK_BUTTONS_OK,
 
190
                                  "You need to select some clusters first!");
 
191
                respond=gtk_dialog_run ((GtkDialog*)Dlg);
 
192
                gtk_widget_hide((GtkWidget*)Dlg);
 
193
 
 
194
        }
 
195
}
 
196
  void mNodePropertiesSlot (GtkWidget *widget,gpointer user_data)
 
197
{
 
198
        if(  ((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->selectedNodesCount > 0)
 
199
        {
 
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]);
 
203
        }
 
204
        else
 
205
        {
 
206
                Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
207
                                                                GTK_DIALOG_MODAL,
 
208
                                  GTK_MESSAGE_QUESTION,
 
209
                                  GTK_BUTTONS_OK,
 
210
                                  "You need to select some nodes first!");
 
211
                respond=gtk_dialog_run ((GtkDialog*)Dlg);
 
212
                gtk_widget_hide((GtkWidget*)Dlg);
 
213
 
 
214
        }
 
215
}
 
216
  void mEdgePropertiesSlot (GtkWidget *widget,gpointer user_data)
 
217
{
 
218
        if(  ((custom_graph_data*)AGDATA(view->g[view->activeGraph]))->selectedEdgesCount > 0)
 
219
        {
 
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]);
 
223
        }
 
224
        else
 
225
        {
 
226
                Dlg =(GtkMessageDialog*) gtk_message_dialog_new (NULL,
 
227
                                                                GTK_DIALOG_MODAL,
 
228
                                  GTK_MESSAGE_QUESTION,
 
229
                                  GTK_BUTTONS_OK,
 
230
                                  "You need to select some Edges first!");
 
231
                respond=gtk_dialog_run ((GtkDialog*)Dlg);
 
232
                gtk_widget_hide((GtkWidget*)Dlg);
 
233
        }
 
234
 
 
235
}
 
236
 
 
237
 
 
238
  void mShowCodeSlot (GtkWidget *widget,gpointer user_data)
 
239
{
 
240
}
 
241
  void mDotSlot (GtkWidget *widget,gpointer user_data)
 
242
{
 
243
        GdkCursor* cursor;
 
244
        GdkWindow* w;
 
245
        Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
246
                                                                GTK_DIALOG_MODAL,
 
247
                                  GTK_MESSAGE_QUESTION,
 
248
                                  GTK_BUTTONS_YES_NO,
 
249
                                  "This will change the graph layout\n all your position changes will be lost\n Are you sure?");
 
250
 
 
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);
 
255
 
 
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);
 
260
}
 
261
 
 
262
  void mNeatoSlot (GtkWidget *widget,gpointer user_data)
 
263
{
 
264
        Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
265
                                                                GTK_DIALOG_MODAL,
 
266
                                  GTK_MESSAGE_QUESTION,
 
267
                                  GTK_BUTTONS_YES_NO,
 
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);
 
273
}
 
274
 
 
275
  void mTwopiSlot (GtkWidget *widget,gpointer user_data)
 
276
{
 
277
        Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
278
                                                                GTK_DIALOG_MODAL,
 
279
                                  GTK_MESSAGE_QUESTION,
 
280
                                  GTK_BUTTONS_YES_NO,
 
281
                                  "This will change the graph layout\n all your position changes will be lost\n Are you sure?");
 
282
 
 
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);
 
287
 
 
288
}
 
289
 
 
290
  void mCircoSlot (GtkWidget *widget,gpointer user_data)
 
291
{
 
292
        Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
293
                                                                GTK_DIALOG_MODAL,
 
294
                                  GTK_MESSAGE_QUESTION,
 
295
                                  GTK_BUTTONS_YES_NO,
 
296
                                  "This will change the graph layout\n all your position changes will be lost\n Are you sure?");
 
297
 
 
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);
 
302
}
 
303
 
 
304
  void mFdpSlot (GtkWidget *widget,gpointer user_data)
 
305
{
 
306
        int ind=0;
 
307
        
 
308
        Dlg = (GtkMessageDialog*)gtk_message_dialog_new (NULL,
 
309
                                                                GTK_DIALOG_MODAL,
 
310
                                  GTK_MESSAGE_QUESTION,
 
311
                                  GTK_BUTTONS_YES_NO,
 
312
                                  "This will change the graph layout\n all your position changes will be lost\n Are you sure?");
 
313
 
 
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);
 
318
}
 
319
 
 
320
//select
 
321
  void  mSelectAllSlot(GtkWidget *widget,gpointer user_data)
 
322
{
 
323
        select_all(view->g[view->activeGraph]);
 
324
}
 
325
 
 
326
 
 
327
  void  mUnselectAllSlot(GtkWidget *widget,gpointer user_data)
 
328
{
 
329
        deselect_all(view->g[view->activeGraph]);
 
330
}
 
331
 
 
332
  void mSelectAllNodesSlot(GtkWidget *widget,gpointer user_data)
 
333
{
 
334
        select_all_nodes(view->g[view->activeGraph]);
 
335
}
 
336
 
 
337
  void mSelectAllEdgesSlot(GtkWidget *widget,gpointer user_data)
 
338
{
 
339
        select_all_edges(view->g[view->activeGraph]);
 
340
}
 
341
 
 
342
void mSelectAllClustersSlot(GtkWidget *widget,gpointer user_data)
 
343
{
 
344
        select_all_graphs(view->g[view->activeGraph]);
 
345
}
 
346
 
 
347
 
 
348
void mUnselectAllNodesSlot(GtkWidget *widget,gpointer user_data)
 
349
{
 
350
        deselect_all_nodes(view->g[view->activeGraph]);
 
351
}
 
352
 
 
353
void mUnselectAllEdgesSlot(GtkWidget *widget,gpointer user_data)
 
354
{
 
355
        deselect_all_edges(view->g[view->activeGraph]);
 
356
}
 
357
 
 
358
 
 
359
void mUnselectAllClustersSlot(GtkWidget *widget,gpointer user_data)
 
360
{
 
361
        deselect_all_graphs(view->g[view->activeGraph]);
 
362
}
 
363
 
 
364
void mSingleSelectSlot(GtkWidget *widget,gpointer user_data)
 
365
{
 
366
}
 
367
 
 
368
void mSelectAreaSlot(GtkWidget *widget,gpointer user_data)
 
369
{
 
370
}
 
371
 
 
372
void mSelectAreaXSlot(GtkWidget *widget,gpointer user_data)
 
373
{
 
374
 
 
375
}
 
376
 
 
377
//help
 
378
void mAbout(GtkWidget *widget,gpointer user_data)
 
379
{
 
380
}
 
381
 
 
382
void mHelp(GtkWidget *widget,gpointer user_data)
 
383
{
 
384
}