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

« back to all changes in this revision

Viewing changes to cmd/smyrna/tvnodes.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: tvnodes.c,v 1.4 2008/03/03 23:03:38 arif Exp $ $Revision: 1.4 $ */
 
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 "topview.h"
 
18
#include "tvnodes.h"
 
19
#include "btree.h"
 
20
#include "viewport.h"
 
21
#include "selection.h"
 
22
tv_nodes TV_Nodes;
 
23
static char buf [255];
 
24
int MP_Flag=0;
 
25
 
 
26
tv_filter* create_tv_filter()
 
27
{
 
28
        tv_filter* f;
 
29
        f=(tv_filter*)malloc(sizeof(tv_filter));
 
30
        clear_tv_filter(f);
 
31
        return f;
 
32
}
 
33
void init_tv_nodes(tv_nodes* TV_Nodes)
 
34
{
 
35
        int i;
 
36
        TV_Nodes->filtered=0;
 
37
        TV_Nodes->activepage=-1;
 
38
        TV_Nodes->firstnodeid=0;
 
39
        TV_Nodes->pagecount=0;
 
40
        TV_Nodes->recordperpage=22;
 
41
        TV_Nodes->page_data_index=0;
 
42
        TV_Nodes->Y_Gap=25;
 
43
        TV_Nodes->Y=12;
 
44
        TV_Nodes->initial_Y=12;
 
45
        TV_Nodes->chkSelected_X=5;
 
46
        TV_Nodes->IDLabel_X=10;
 
47
        TV_Nodes->chkVisible_X=55;
 
48
        TV_Nodes->chkHighlighted_X=85;
 
49
        TV_Nodes->Data1_X=105;
 
50
        TV_Nodes->Data2_X=305;
 
51
        TV_Nodes->page_data_node_index=0;
 
52
        reset_page_History();
 
53
 
 
54
        //null gui elemetns
 
55
        for (i=0;i < MAX_NODE_PER_PAGE ;i ++)
 
56
        {
 
57
                TV_Nodes->TV_Node[i].chkHighlighted=NULL;
 
58
                TV_Nodes->TV_Node[i].chkSelected=NULL;
 
59
                TV_Nodes->TV_Node[i].chkVisible=NULL;
 
60
                TV_Nodes->TV_Node[i].Data1=NULL;
 
61
                TV_Nodes->TV_Node[i].Data2=NULL;
 
62
                TV_Nodes->TV_Node[i].IDLabel=NULL;
 
63
        }
 
64
        TV_Nodes->initialized=1;
 
65
}
 
66
 
 
67
void clear_tv_filter(tv_filter* TV_Filter)
 
68
{
 
69
        TV_Filter->highlighted=-1;
 
70
        TV_Filter->visible=-1;
 
71
        TV_Filter->min_data1=NULL;
 
72
        TV_Filter->max_data1=NULL;
 
73
        TV_Filter->min_data2=NULL;
 
74
        TV_Filter->max_data2=NULL;
 
75
        
 
76
        TV_Nodes.filtered=0;
 
77
 
 
78
}
 
79
 
 
80
extern int set_filter(tv_filter* TV_Filter,char* MinData1,char* MaxData1,char* MinData2,char* MaxData2,char* Filter_String,int selected,int visible,int highlighted)
 
81
{
 
82
        TV_Filter->selected=selected;
 
83
        TV_Filter->highlighted=highlighted;
 
84
        TV_Filter->visible=visible;
 
85
        TV_Filter->min_data1=MinData1;
 
86
        TV_Filter->max_data1=MaxData1;
 
87
        TV_Filter->min_data2=MinData2;
 
88
        TV_Filter->max_data2=MaxData2;
 
89
        TV_Filter->filter_string=Filter_String;
 
90
        TV_Nodes.filtered=1;
 
91
        return 1;
 
92
}
 
93
int reverse_selection()
 
94
{
 
95
        int i=0;
 
96
        for (i; i < view->Topview->Nodecount ; i ++)
 
97
        {
 
98
                if (((custom_object_data*)AGDATA(view->Topview->Nodes[i].Node))->Selected )
 
99
                        deselect_node(view->g[view->activeGraph],view->Topview->Nodes[i].Node);
 
100
                else
 
101
                        select_node(view->g[view->activeGraph],view->Topview->Nodes[i].Node);
 
102
        }
 
103
        for (i=0; i < view->Topview->Edgecount ; i ++)
 
104
        {
 
105
                if (((custom_object_data*)AGDATA(view->Topview->Edges[i].Edge))->Selected )
 
106
                        deselect_edge(view->g[view->activeGraph],view->Topview->Edges[i].Edge);
 
107
                else
 
108
                        select_edge(view->g[view->activeGraph],view->Topview->Edges[i].Edge);
 
109
        }
 
110
}
 
111
int validate_node(tv_node* TV_Node)
 
112
{
 
113
        static btree_node* n=0;
 
114
        char* data_attr1;
 
115
        char* data_attr2;
 
116
        char* buf;
 
117
//              n=tree_from_filter_string("([IP=\"^10.*\",min=\"0\",max=\"0\"])");
 
118
        // get attributes from graph
 
119
        data_attr1=agget(view->g[view->activeGraph],"DataAttribute1");
 
120
        data_attr2=agget(view->g[view->activeGraph],"DataAttribute2");
 
121
 
 
122
 
 
123
        if (TV_Nodes.filtered)
 
124
        {
 
125
                int valid=1;
 
126
                if((MP_Flag==1) || (!n))
 
127
                {
 
128
                        n=tree_from_filter_string(TV_Nodes.filter.filter_string);
 
129
                        MP_Flag=0;
 
130
                        buf=agget(view->Topview->Nodes[TV_Node->index].Node,data_attr1);
 
131
                        if(buf)
 
132
                        {
 
133
                                if (strcmp(TV_Nodes.filter.min_data1,buf))
 
134
                                        valid=0;
 
135
                        }
 
136
                }
 
137
                if (data_attr1 && TV_Nodes.filter.max_data1 && agget(view->Topview->Nodes[TV_Node->index].Node,data_attr1))
 
138
                {
 
139
                        if (strcmp(agget(view->Topview->Nodes[TV_Node->index].Node,data_attr1),TV_Nodes.filter.min_data1))
 
140
                                valid=0;
 
141
                }
 
142
                //string data checks attr2
 
143
                if (data_attr2 && TV_Nodes.filter.min_data2 && agget(view->Topview->Nodes[TV_Node->index].Node,data_attr2))
 
144
                {
 
145
                        if (strcmp(TV_Nodes.filter.min_data2,  agget(view->Topview->Nodes[TV_Node->index].Node,data_attr2)   ))
 
146
                                valid=0;
 
147
                }
 
148
                if (data_attr2 && TV_Nodes.filter.max_data2 && agget(view->Topview->Nodes[TV_Node->index].Node,data_attr2))
 
149
                {
 
150
                        if (agget(view->Topview->Nodes[TV_Node->index].Node,data_attr2),TV_Nodes.filter.min_data2)
 
151
                                valid=0;
 
152
                }
 
153
                if (strlen(TV_Nodes.filter.filter_string)>0)
 
154
                        valid=evaluate_expresions (TV_Node,n);
 
155
                //if show only highlighted 
 
156
                if (TV_Nodes.filter.highlighted >= 0)   
 
157
                {
 
158
                        if(((custom_object_data*)AGDATA(view->Topview->Nodes[TV_Node->index].Node))->Highlighted!= TV_Nodes.filter.highlighted)
 
159
                                valid=0;
 
160
                }
 
161
                //if show only visibles
 
162
                if (TV_Nodes.filter.visible >= 0)       
 
163
                {
 
164
                        if(((custom_object_data*)AGDATA(view->Topview->Nodes[TV_Node->index].Node))->Visible!= TV_Nodes.filter.visible)
 
165
                                valid=0;
 
166
                }
 
167
                //if show only selected
 
168
                if (TV_Nodes.filter.selected >= 0)      
 
169
                {
 
170
                        if(((custom_object_data*)AGDATA(view->Topview->Nodes[TV_Node->index].Node))->Selected!= TV_Nodes.filter.selected)
 
171
                                valid=0;
 
172
                }
 
173
                return valid;
 
174
        }
 
175
        else
 
176
                return 1;
 
177
}
 
178
 
 
179
int update_node_gui_objects(tv_node* TV_Node)
 
180
{
 
181
        char* data_attr1;
 
182
        char* data_attr2;
 
183
        char buf[255];
 
184
        GtkLayout* layout;
 
185
 
 
186
        // get attributes from graph
 
187
        data_attr1=agget(view->g[view->activeGraph],"DataAttribute1");
 
188
        data_attr2=agget(view->g[view->activeGraph],"DataAttribute2");
 
189
 
 
190
        //create if objects are null    
 
191
        layout=(GtkLayout*)glade_xml_get_widget(xml, "layoutTVData");
 
192
        //select box
 
193
        if (!TV_Node->chkSelected)
 
194
        {
 
195
                TV_Node->chkSelected=(GtkCheckButton*)gtk_check_button_new();
 
196
                gtk_layout_put  (layout,(GtkWidget*)TV_Node->chkSelected,LOCATION_X_CHKSELECTED,TV_Nodes.Y);
 
197
        }
 
198
        gtk_widget_show((GtkWidget*)TV_Node->chkSelected);
 
199
        gtk_toggle_button_set_active((GtkToggleButton*)TV_Node->chkSelected,((custom_object_data*)AGDATA(view->Topview->Nodes[TV_Node->index].Node))->Selected);
 
200
 
 
201
        //Id Label
 
202
        if (!TV_Node->IDLabel)
 
203
        {
 
204
                TV_Node->IDLabel=(GtkLabel*)gtk_label_new("");
 
205
                gtk_layout_put  (layout,(GtkWidget*)TV_Node->IDLabel,LOCATION_X_IDLABEL,TV_Nodes.Y);
 
206
        }
 
207
        sprintf(buf, "%d", TV_Node->index);
 
208
        gtk_label_set_text (TV_Node->IDLabel,buf);
 
209
        gtk_widget_show((GtkWidget*)TV_Node->IDLabel);
 
210
 
 
211
        //visible
 
212
        if (!TV_Node->chkVisible)
 
213
        {               
 
214
                TV_Node->chkVisible=(GtkCheckButton*)gtk_check_button_new();
 
215
                gtk_layout_put  (layout,(GtkWidget*)TV_Node->chkVisible,LOCATION_X_CHKVISIBLE,TV_Nodes.Y);
 
216
        }
 
217
 
 
218
        gtk_widget_show((GtkWidget*)TV_Node->chkVisible);
 
219
        gtk_toggle_button_set_active((GtkToggleButton*)TV_Node->chkVisible,((custom_object_data*)AGDATA(view->Topview->Nodes[TV_Node->index].Node))->Visible);
 
220
        //highlighted
 
221
        if (!TV_Node->chkHighlighted)
 
222
        {
 
223
                TV_Node->chkHighlighted=(GtkCheckButton*)gtk_check_button_new();
 
224
                gtk_layout_put  (layout,(GtkWidget*)TV_Node->chkHighlighted,LOCATION_X_CHKHIGHLIGHTED,TV_Nodes.Y);
 
225
        }
 
226
        gtk_widget_show((GtkWidget*)TV_Node->chkHighlighted);
 
227
        gtk_toggle_button_set_active((GtkToggleButton*)TV_Node->chkHighlighted,((custom_object_data*)AGDATA(view->Topview->Nodes[TV_Node->index].Node))->Highlighted);
 
228
 
 
229
        
 
230
        //DATA 1
 
231
        if (!TV_Node->Data1)
 
232
        {
 
233
                TV_Node->Data1=(GtkEntry*)gtk_entry_new();
 
234
                gtk_layout_put  (layout,(GtkWidget*)TV_Node->Data1,LOCATION_X_DATA1,TV_Nodes.Y);
 
235
                gtk_widget_set_size_request((GtkWidget*)TV_Node->Data1,300,23);
 
236
 
 
237
        }
 
238
        if(data_attr1)
 
239
        {
 
240
                gtk_entry_set_text (TV_Node->Data1,agget(view->Topview->Nodes[TV_Node->index].Node,data_attr1));
 
241
        }
 
242
        else
 
243
                gtk_entry_set_text (TV_Node->Data1,"");
 
244
        gtk_widget_show((GtkWidget*)TV_Node->Data1);
 
245
 
 
246
        //DATA 2
 
247
        if (!TV_Node->Data2)
 
248
        {
 
249
                TV_Node->Data2=(GtkEntry*)gtk_entry_new();
 
250
                gtk_layout_put  (layout,(GtkWidget*)TV_Node->Data2,LOCATION_X_DATA2,TV_Nodes.Y);
 
251
                gtk_widget_set_size_request((GtkWidget*)TV_Node->Data2,300,23);
 
252
        }
 
253
        if(data_attr2)
 
254
        {
 
255
                gtk_entry_set_text (TV_Node->Data2,agget(view->Topview->Nodes[TV_Node->index].Node,data_attr2));
 
256
        }
 
257
        else
 
258
                gtk_entry_set_text (TV_Node->Data2,"");
 
259
        gtk_widget_show((GtkWidget*)TV_Node->Data2);
 
260
        return 1;
 
261
 
 
262
}
 
263
 
 
264
 
 
265
extern int      tv_nodes_last_page()
 
266
{
 
267
        if (TV_Nodes.activepage<TV_Nodes.pagecount)
 
268
                return tv_nodes_goto_page(TV_Nodes.pagecount);
 
269
        else
 
270
                return 0;
 
271
}
 
272
extern int      tv_nodes_first_page()
 
273
{
 
274
        if (TV_Nodes.activepage>0)
 
275
                return tv_nodes_goto_page(0);
 
276
        else
 
277
                return 0;
 
278
}
 
279
 
 
280
extern int tv_nodes_goto_page(int page)
 
281
{
 
282
        GtkSpinButton* spn;
 
283
        tv_node* tvn;
 
284
        GtkLabel* lblTVPage;
 
285
 
 
286
        if ((page >=0) && page <= TV_Nodes.pagecount)
 
287
        {
 
288
                if(TV_Nodes.general_purpose_flag==1)
 
289
                {
 
290
                        update_TV_data_from_gui();
 
291
                        TV_Nodes.general_purpose_flag=0;
 
292
                }
 
293
                TV_Nodes.activepage=page;
 
294
                TV_Nodes.page_data_node_index=TV_Nodes.page_history[TV_Nodes.activepage];
 
295
                TV_Nodes.page_data_index=0;
 
296
                TV_Nodes.firstnodeid=TV_Nodes.page_data_node_index;
 
297
                TV_Nodes.Y=TV_Nodes.initial_Y;
 
298
                hide_data_widgets();
 
299
        }
 
300
        else
 
301
                return 0;
 
302
        while ((TV_Nodes.page_data_index < TV_Nodes.recordperpage)&&(TV_Nodes.page_data_node_index < view->Topview->Nodecount))
 
303
        {
 
304
                tvn=&TV_Nodes.TV_Node[TV_Nodes.page_data_index];
 
305
                tvn->index=TV_Nodes.page_data_node_index;
 
306
                if(view->Topview->Nodes[TV_Nodes.page_data_node_index].valid==1)
 
307
                {
 
308
                        TV_Nodes.page_data_index++;
 
309
                        update_node_gui_objects(tvn);
 
310
                        TV_Nodes.Y=TV_Nodes.Y+TV_Nodes.Y_Gap;
 
311
                }
 
312
                TV_Nodes.page_data_node_index++;
 
313
        }
 
314
        lblTVPage=(GtkLabel*)glade_xml_get_widget(xml, "lblTVPage");
 
315
        sprintf(buf,"(%i / %i)", TV_Nodes.activepage+1,TV_Nodes.pagecount+1);
 
316
        gtk_label_set_text(lblTVPage,buf);
 
317
        spn=(GtkSpinButton*)glade_xml_get_widget(xml, "spnTVGotopage");
 
318
        gtk_spin_button_set_value(spn,page+1);
 
319
 
 
320
 
 
321
 
 
322
 
 
323
        return 1;
 
324
}
 
325
 
 
326
extern int tv_nodes_prior_page()
 
327
{
 
328
        if (TV_Nodes.activepage >0)
 
329
        {
 
330
                return tv_nodes_goto_page(TV_Nodes.activepage -1);
 
331
        }
 
332
        else
 
333
                return 0;
 
334
}
 
335
 
 
336
 
 
337
extern int tv_nodes_next_page()
 
338
{
 
339
        if (TV_Nodes.activepage < TV_Nodes.pagecount)
 
340
        {
 
341
                return tv_nodes_goto_page(TV_Nodes.activepage +1);
 
342
        }
 
343
        else
 
344
                return 0;
 
345
}
 
346
extern void execute_tv_nodes()
 
347
{
 
348
 
 
349
            gtk_widget_hide(glade_xml_get_widget(xml, "frmTVNodes"));
 
350
                gtk_widget_show(glade_xml_get_widget(xml, "frmTVNodes"));
 
351
//              gtk_window_set_keep_above           (glade_xml_get_widget(xml, "frmTVNodes"),1);
 
352
                if(TV_Nodes.initialized < 1)
 
353
                {
 
354
                        init_tv_nodes(&TV_Nodes);
 
355
                }
 
356
                //test filter
 
357
                prepare_page_history();
 
358
                TV_Nodes.general_purpose_flag=1;
 
359
                tv_nodes_next_page();
 
360
}
 
361
 
 
362
 
 
363
static int hide_data_widgets()
 
364
{
 
365
        int i;
 
366
        for (i=0;i < MAX_NODE_PER_PAGE ;i ++)
 
367
        {
 
368
                if (TV_Nodes.TV_Node[i].chkHighlighted) 
 
369
                {               
 
370
                        gtk_widget_hide((GtkWidget*)TV_Nodes.TV_Node[i].chkHighlighted);
 
371
                        gtk_widget_hide((GtkWidget*)TV_Nodes.TV_Node[i].chkSelected);
 
372
                        gtk_widget_hide((GtkWidget*)TV_Nodes.TV_Node[i].chkVisible);
 
373
                        gtk_widget_hide((GtkWidget*)TV_Nodes.TV_Node[i].Data1);
 
374
                        gtk_widget_hide((GtkWidget*)TV_Nodes.TV_Node[i].Data2);
 
375
                        gtk_widget_hide((GtkWidget*)TV_Nodes.TV_Node[i].IDLabel);
 
376
                }
 
377
        }
 
378
        return 1;
 
379
        
 
380
 
 
381
}
 
382
extern int reset_page_History()
 
383
{
 
384
/*      if(TV_Nodes.page_history_count > 0)
 
385
        {
 
386
                free(TV_Nodes.page_history);
 
387
                TV_Nodes.page_history_count=0;
 
388
        }*/
 
389
        TV_Nodes.page_history_count=0;
 
390
        TV_Nodes.page_history=realloc(TV_Nodes.page_history,sizeof(int) * TV_Nodes.page_history_count);
 
391
        return 1;
 
392
 
 
393
 
 
394
}
 
395
static int push_to_page_history(int index)
 
396
{
 
397
        TV_Nodes.page_history_count++;
 
398
        TV_Nodes.page_history=realloc(TV_Nodes.page_history,sizeof(int) * TV_Nodes.page_history_count);
 
399
        TV_Nodes.page_history[TV_Nodes.page_history_count-1]=index;
 
400
        return 1;
 
401
}
 
402
static int pop_from_page_history()
 
403
{
 
404
        if(TV_Nodes.page_history_count > 0)
 
405
        {
 
406
                int return_value;
 
407
                return_value=TV_Nodes.page_history[TV_Nodes.page_history_count-1];
 
408
                TV_Nodes.page_history_count--;
 
409
                TV_Nodes.page_history=realloc(TV_Nodes.page_history,sizeof(int) * TV_Nodes.page_history_count);
 
410
                return return_value;
 
411
        }
 
412
        return 0;
 
413
}
 
414
 
 
415
extern int prepare_page_history()
 
416
{
 
417
        GtkLabel* lblTVPage;
 
418
        GtkSpinButton* spn;
 
419
        int i=0;
 
420
        int count=0;
 
421
        tv_node tvn;
 
422
        TV_Nodes.pagecount=0;
 
423
        TV_Nodes.activepage=-1;
 
424
        reset_page_History();
 
425
        push_to_page_history(0);
 
426
        
 
427
        for (i;i < view->Topview->Nodecount ; i++)
 
428
        {
 
429
                tvn.index=i;
 
430
                if(validate_node(&tvn))
 
431
                {
 
432
                        count ++;
 
433
                        view->Topview->Nodes[i].valid=1;
 
434
                }
 
435
                else
 
436
                        view->Topview->Nodes[i].valid=0;
 
437
                if (count== TV_Nodes.recordperpage)
 
438
                {
 
439
                        push_to_page_history(i+1);
 
440
                        TV_Nodes.pagecount++;
 
441
                        count=0;
 
442
                }
 
443
        }
 
444
        spn=(GtkSpinButton*)glade_xml_get_widget(xml, "spnTVGotopage");
 
445
        gtk_spin_button_set_value(spn,0);
 
446
        gtk_spin_button_set_range(spn,0,TV_Nodes.pagecount+1);
 
447
 
 
448
 
 
449
        lblTVPage=(GtkLabel*)glade_xml_get_widget(xml, "lblTVPage");
 
450
        sprintf(buf,"(%i / %i)", 1,TV_Nodes.pagecount+1);
 
451
        gtk_label_set_text(lblTVPage,buf);
 
452
        set_data_attributes();
 
453
        return 1;
 
454
 
 
455
}
 
456
static int set_data_attributes()
 
457
{
 
458
        GtkLabel* lblData1;
 
459
        GtkLabel* lblData2;
 
460
        char* data_attr1;
 
461
        char* data_attr2;
 
462
        // get attributes from graph
 
463
        data_attr1=agget(view->g[view->activeGraph],"DataAttribute1");
 
464
        data_attr2=agget(view->g[view->activeGraph],"DataAttribute2");
 
465
        if (!data_attr1)
 
466
        {
 
467
                agattr(view->g[view->activeGraph],AGRAPH,"DataAttribute1","DATA1");
 
468
                agattr(view->g[view->activeGraph],AGNODE,"DATA1","");
 
469
        }
 
470
        if (!data_attr2)
 
471
        {
 
472
                agattr(view->g[view->activeGraph],AGRAPH,"DataAttribute2","DATA2");
 
473
                agattr(view->g[view->activeGraph],AGNODE,"DATA2","");
 
474
        }
 
475
 
 
476
        data_attr1=agget(view->g[view->activeGraph],"DataAttribute1");
 
477
        data_attr2=agget(view->g[view->activeGraph],"DataAttribute2");
 
478
 
 
479
        lblData1=(GtkLabel*)glade_xml_get_widget(xml, "lblTVData1");
 
480
        lblData2=(GtkLabel*)glade_xml_get_widget(xml, "lblTVData2");
 
481
        gtk_label_set_text (lblData1,data_attr1);
 
482
        gtk_label_set_text (lblData2,data_attr2);
 
483
        return 1;
 
484
 
 
485
}
 
486
 
 
487
extern int update_TV_data_from_gui()
 
488
{
 
489
        int i=0;
 
490
        int index=0;
 
491
        char* data_attr1;
 
492
        char* data_attr2;
 
493
        // get attributes from graph
 
494
        data_attr1=agget(view->g[view->activeGraph],"DataAttribute1");
 
495
        data_attr2=agget(view->g[view->activeGraph],"DataAttribute2");
 
496
 
 
497
        for (i;i < TV_Nodes.recordperpage ; i++)
 
498
        {
 
499
                index=TV_Nodes.TV_Node[i].index;
 
500
                if (index < view->Topview->Nodecount)
 
501
                {
 
502
                        // apply if selected
 
503
                        if(gtk_toggle_button_get_active((GtkToggleButton*)TV_Nodes.TV_Node[i].chkSelected))
 
504
                        {
 
505
                                if (!((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Selected)
 
506
                                        select_node(view->g[view->activeGraph],view->Topview->Nodes[index].Node);                                       
 
507
                        }
 
508
                        else
 
509
                        {
 
510
                                if (((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Selected)
 
511
                                        deselect_node(view->g[view->activeGraph],view->Topview->Nodes[index].Node);                                     
 
512
                        }
 
513
                        // apply if Visible
 
514
                        if(gtk_toggle_button_get_active((GtkToggleButton*)TV_Nodes.TV_Node[i].chkVisible))
 
515
                        {
 
516
                                if (!((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Visible)
 
517
                                        ((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Visible=1;
 
518
                        }
 
519
                        else
 
520
                        {
 
521
                                if (((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Visible)
 
522
                                        ((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Visible=0;
 
523
                        }
 
524
                        // apply if Highlighted
 
525
                        if(gtk_toggle_button_get_active((GtkToggleButton*)TV_Nodes.TV_Node[i].chkHighlighted))
 
526
                        {
 
527
                                if (!((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Highlighted)
 
528
                                        ((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Highlighted=1;
 
529
                        }
 
530
                        else
 
531
                        {
 
532
                                if (((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Highlighted)
 
533
                                        ((custom_object_data*)AGDATA(view->Topview->Nodes[index].Node))->Highlighted=0;
 
534
                        }
 
535
                        //Data1 
 
536
                        agset((void*)view->Topview->Nodes[index].Node,data_attr1,(char*)gtk_entry_get_text (TV_Nodes.TV_Node[i].Data1));
 
537
                        //Data2 
 
538
                        agset(view->Topview->Nodes[index].Node,data_attr2,(char*)gtk_entry_get_text (TV_Nodes.TV_Node[i].Data2));
 
539
 
 
540
                }
 
541
        }
 
542
                return 1;
 
543
 
 
544
 
 
545
}
 
546
 
 
547
extern int apply_filter_from_gui()
 
548
{
 
549
        int selected;
 
550
        int visible;
 
551
        int highlighted;
 
552
 
 
553
        if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterSel1")))  
 
554
                        selected=-1;
 
555
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterSel2")))  
 
556
                        selected=1;
 
557
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterSel3")))  
 
558
                        selected=0;
 
559
 
 
560
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterVisible1")))      
 
561
                        visible=-1;
 
562
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterVisible2")))      
 
563
                        visible=1;
 
564
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterVisible3")))      
 
565
                        visible=0;
 
566
 
 
567
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterHigh1"))) 
 
568
                        highlighted=-1;
 
569
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterHigh2"))) 
 
570
                        highlighted=1;
 
571
                if(gtk_toggle_button_get_active((GtkToggleButton*)glade_xml_get_widget(xml,"rbTVFilterHigh3"))) 
 
572
                        highlighted=0;
 
573
                set_filter(&TV_Nodes.filter,
 
574
                (char*)gtk_entry_get_text ((GtkEntry*)glade_xml_get_widget(xml,"edtTVFilterMinData1") ),
 
575
                (char*)gtk_entry_get_text ((GtkEntry*)glade_xml_get_widget(xml,"edtTVFilterMaxData1") ),
 
576
                (char*)gtk_entry_get_text ((GtkEntry*)glade_xml_get_widget(xml,"edtTVFilterMinData2") ),
 
577
                (char*)gtk_entry_get_text ((GtkEntry*)glade_xml_get_widget(xml,"edtTVFilterMaxData2") ),
 
578
                (char*)gtk_entry_get_text ((GtkEntry*)glade_xml_get_widget(xml,"edtTVFilterString") ),
 
579
                        selected,visible,highlighted);
 
580
                MP_Flag=1;
 
581
                prepare_page_history();
 
582
                tv_nodes_next_page();
 
583
                return 1;
 
584
}
 
585
 
 
586
 
 
587
extern int tv_select_all()
 
588
{
 
589
 
 
590
        tv_node tvn;
 
591
        int i=0;
 
592
        for (i;i < view->Topview->Nodecount ; i++)
 
593
        {
 
594
                tvn.index=i;
 
595
                if(validate_node(&tvn))
 
596
                {
 
597
                        select_node(view->g[view->activeGraph],view->Topview->Nodes[i].Node);
 
598
                }
 
599
        }
 
600
        apply_filter_from_gui();
 
601
        return 1;
 
602
 
 
603
}
 
604
extern int tv_unselect_all()
 
605
{
 
606
 
 
607
        tv_node tvn;
 
608
        int i=0;
 
609
        for (i;i < view->Topview->Nodecount ; i++)
 
610
        {
 
611
                tvn.index=i;
 
612
                if(validate_node(&tvn))
 
613
                {
 
614
                        deselect_node(view->g[view->activeGraph],view->Topview->Nodes[i].Node);
 
615
                }
 
616
        }
 
617
        apply_filter_from_gui();
 
618
        return 1;
 
619
 
 
620
}
 
621
extern int tv_highligh_all()
 
622
{
 
623
        tv_node tvn;
 
624
        int i=0;
 
625
        for (i;i < view->Topview->Nodecount ; i++)
 
626
        {
 
627
                tvn.index=i;
 
628
                if(validate_node(&tvn))
 
629
                {
 
630
                        ((custom_object_data*)AGDATA(view->Topview->Nodes[i].Node))->Highlighted=1;
 
631
                }
 
632
        }
 
633
        apply_filter_from_gui();
 
634
        return 1;
 
635
 
 
636
 
 
637
}
 
638
extern int tv_unhighligh_all()
 
639
{
 
640
        tv_node tvn;
 
641
        int i=0;
 
642
        for (i;i < view->Topview->Nodecount ; i++)
 
643
        {
 
644
                tvn.index=i;
 
645
                if(validate_node(&tvn))
 
646
                {
 
647
                        ((custom_object_data*)AGDATA(view->Topview->Nodes[i].Node))->Highlighted=0;
 
648
                }
 
649
        }
 
650
        apply_filter_from_gui();
 
651
        return 1;
 
652
 
 
653
}
 
654
extern int tv_show_all()
 
655
{
 
656
        tv_node tvn;
 
657
        int i=0;
 
658
        for (i;i < view->Topview->Nodecount ; i++)
 
659
        {
 
660
                tvn.index=i;
 
661
                if(validate_node(&tvn))
 
662
                {
 
663
                        ((custom_object_data*)AGDATA(view->Topview->Nodes[i].Node))->Visible=1;
 
664
                }
 
665
        }
 
666
        apply_filter_from_gui();
 
667
        return 1;
 
668
 
 
669
 
 
670
 
 
671
}
 
672
extern int tv_hide_all()
 
673
{
 
674
        tv_node tvn;
 
675
        int i=0;
 
676
        for (i;i < view->Topview->Nodecount ; i++)
 
677
        {
 
678
                tvn.index=i;
 
679
                if(validate_node(&tvn))
 
680
                {
 
681
                        ((custom_object_data*)AGDATA(view->Topview->Nodes[i].Node))->Visible=0;
 
682
                }
 
683
        }
 
684
        apply_filter_from_gui();
 
685
        return 1;
 
686
 
 
687
 
 
688
}
 
689
 
 
690
 
 
691
 
 
692
 
 
693
 
 
694