From: arif Date: Thu, 19 Nov 2009 20:24:02 +0000 (+0000) Subject: disabling edge or node selection from setting windows X-Git-Tag: LAST_LIBGRAPH~32^2~1554 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ae0a0b03a8a2410877b20dc0c4e1ee104bd59abe;p=graphviz disabling edge or node selection from setting windows --- diff --git a/cmd/smyrna/gui/beacon.c b/cmd/smyrna/gui/beacon.c index 7fed35bb7..d73da6810 100644 --- a/cmd/smyrna/gui/beacon.c +++ b/cmd/smyrna/gui/beacon.c @@ -71,6 +71,7 @@ static int is_edge_picked(topview_edge * e) return 0; } + void pick_node_from_coords(float x, float y, float z) { topview_node *n; @@ -82,6 +83,8 @@ void pick_node_from_coords(float x, float y, float z) float a, b, c; double d; int ind; + int selnodes=atoi(agget(view->g[view->activeGraph],"nodesselectable")); + int seledges=atoi(agget(view->g[view->activeGraph],"edgesselectable")); sn = (topview_node *) 0; se = (topview_edge *) 0; @@ -89,10 +92,11 @@ void pick_node_from_coords(float x, float y, float z) - for (ind = 0; ind < view->Topview->Nodecount; ind++) { + for (ind = 0;( (selnodes)&&(ind < view->Topview->Nodecount)); ind++) { n = &view->Topview->Nodes[ind]; - if (!n->data.Visible) - continue; + if (!select_node) + break; + a = ABS(n->distorted_x - view->mouse.GLpos.x); b = ABS(n->distorted_y - view->mouse.GLpos.y); @@ -104,7 +108,7 @@ void pick_node_from_coords(float x, float y, float z) } } - for (ind = 0; ind < view->Topview->Edgecount; ind++) { + for (ind = 0; ((seledges)&&(ind < view->Topview->Edgecount)); ind++) { point3f p1, p2, p3; e = &view->Topview->Edges[ind]; if (!e->data.Visible) @@ -129,7 +133,8 @@ void pick_node_from_coords(float x, float y, float z) } } - if (closest_dif < closest_dif2 * 3) { + if ((closest_dif < closest_dif2 * 3) ) + { if (sn) { if (!is_node_picked(sn)) add_to_pick_list(sn); diff --git a/cmd/smyrna/selection.c b/cmd/smyrna/selection.c index f0bf50ba9..a3da38d80 100755 --- a/cmd/smyrna/selection.c +++ b/cmd/smyrna/selection.c @@ -673,8 +673,12 @@ static void edge_rectangle_select(ViewInfo* v) } void rectangle_select(ViewInfo* v) { - node_rectangle_select(v); - edge_rectangle_select(v); + int selnodes=atoi(agget(view->g[view->activeGraph],"nodesselectable")); + int seledges=atoi(agget(view->g[view->activeGraph],"edgesselectable")); + if(selnodes) + node_rectangle_select(v); + if(seledges) + edge_rectangle_select(v); } diff --git a/share/gui/attr_widgets.dot b/share/gui/attr_widgets.dot index b0e2f73d4..7e5119393 100644 --- a/share/gui/attr_widgets.dot +++ b/share/gui/attr_widgets.dot @@ -18,6 +18,8 @@ digraph smyrna_attr_widgets graph[check_box_gridvisible="settingsChkBox3"]; graph[check_box_drawnodes="settingsChkBox5-1"]; graph[check_box_drawedges="settingsChkBox5-2"]; + graph[check_box_edgesselectable="chkboxEdgeSelect"]; + graph[check_box_nodesselectable="chkboxNodeSelect"]; graph[combobox_labelglutfont="labelfont"]; graph[combobox_defaultnodeshape="settingscombobox1"]; graph[combobox_colortheme="colorthemecb"]; diff --git a/share/gui/template.dot b/share/gui/template.dot index e3e53961b..fd4a3f8bd 100644 --- a/share/gui/template.dot +++ b/share/gui/template.dot @@ -61,8 +61,8 @@ strict digraph template { defaultedgecolor="pink" edgecolorattribute="" nodesize="50" - - + nodesselectable="1" + edgesselectable="1" ];