From: arif Date: Mon, 4 May 2009 18:07:45 +0000 (+0000) Subject: more smyrna improvemenets including windows gvpr support, mouse wheel zoom X-Git-Tag: LAST_LIBGRAPH~32^2~2115 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ee9d8e8d638c92ce48b46c2c91b223d251ebd97;p=graphviz more smyrna improvemenets including windows gvpr support, mouse wheel zoom --- diff --git a/cmd/smyrna/gltemplate.c b/cmd/smyrna/gltemplate.c index 650ca8bbd..44a11d76f 100755 --- a/cmd/smyrna/gltemplate.c +++ b/cmd/smyrna/gltemplate.c @@ -261,7 +261,7 @@ static gboolean key_press_event(GtkWidget * widget, GdkEventKey * event, static gboolean button_press_event(GtkWidget * widget, GdkEventButton * event, gpointer data) { - if (view->graphCount) + if (view->graphCount) { if (glCompSetClick(view->widgets, (int) event->x, (int) event->y)) expose_event(view->drawing_area, NULL, NULL); @@ -311,6 +311,7 @@ static gboolean button_release_event(GtkWidget * widget, { view->FontSizeConst=GetOGLDistance(14); + if (event->button == 1) //left click release { if (glCompSetRelease @@ -377,6 +378,17 @@ static gboolean button_release_event(GtkWidget * widget, return FALSE; } +static scroll_event(GtkWidget * widget, + GdkEventScroll * event, gpointer data) +{ + if(event->direction==0) + view->mouse.dx = -30; + if(event->direction==1) + view->mouse.dx = 30; + glmotion_zoom(view); + glexpose(); +} + /* when mouse is moved over glcanvas this function is called params:gtk opgn gl canvas , GdkEventMotion object and custom data @@ -392,7 +404,8 @@ static gboolean motion_notify_event(GtkWidget * widget, gboolean redraw = FALSE; - dx = x - begin_x; + + dx = x - begin_x; dy = y - begin_y; view->mouse.dx = dx; @@ -598,6 +611,7 @@ void create_window(GdkGLConfig * glconfig, GtkWidget * vbox) GDK_POINTER_MOTION_MASK| GDK_BUTTON_PRESS_MASK |GDK_KEY_PRESS | GDK_BUTTON_RELEASE_MASK | + GDK_SCROLL | GDK_VISIBILITY_NOTIFY_MASK); g_signal_connect_after(G_OBJECT(view->drawing_area), "realize", @@ -609,16 +623,24 @@ void create_window(GdkGLConfig * glconfig, GtkWidget * vbox) g_signal_connect(G_OBJECT(view->drawing_area), "button_press_event", G_CALLBACK(button_press_event), NULL); + g_signal_connect(G_OBJECT(view->drawing_area), "2button_press_event", + G_CALLBACK(button_press_event), NULL); + g_signal_connect(G_OBJECT(view->drawing_area), "button_release_event", G_CALLBACK(button_release_event), NULL); g_signal_connect(G_OBJECT(view->drawing_area), "key_release_event", G_CALLBACK(button_release_event), NULL); g_signal_connect(G_OBJECT(view->drawing_area), "key_press_event", G_CALLBACK(button_release_event), NULL); + g_signal_connect(G_OBJECT(view->drawing_area), "scroll_event", + G_CALLBACK(scroll_event), NULL); + g_signal_connect(G_OBJECT(view->drawing_area), "motion_notify_event", G_CALLBACK(motion_notify_event), NULL); + + gtk_box_pack_start(GTK_BOX(vbox), view->drawing_area, TRUE, TRUE, 0); gtk_widget_show(view->drawing_area); diff --git a/cmd/smyrna/gui/menucallbacks.c b/cmd/smyrna/gui/menucallbacks.c index cf718c84d..cfedb5cae 100755 --- a/cmd/smyrna/gui/menucallbacks.c +++ b/cmd/smyrna/gui/menucallbacks.c @@ -391,3 +391,8 @@ void change_cursor(GdkCursorType C) gdk_cursor_destroy(cursor); return; } +void mTestgvpr(GtkWidget * widget, gpointer user_data) +{ + apply_gvpr(view->g[view->activeGraph],"c:/graphviz-ms/bin/makered.g"); + +} diff --git a/cmd/smyrna/gui/menucallbacks.h b/cmd/smyrna/gui/menucallbacks.h index 4b0f6e14b..6f4338714 100755 --- a/cmd/smyrna/gui/menucallbacks.h +++ b/cmd/smyrna/gui/menucallbacks.h @@ -77,6 +77,7 @@ _BB void mSelectAreaXSlot(GtkWidget * widget, gpointer user_data); //help _BB void mAbout(GtkWidget * widget, gpointer user_data); _BB void mHelp(GtkWidget * widget, gpointer user_data); +_BB void mTestgvpr(GtkWidget * widget, gpointer user_data); void change_cursor(GdkCursorType C); int show_close_nosavedlg(void); diff --git a/cmd/smyrna/main.c b/cmd/smyrna/main.c index 9e8eb1339..bd5b25222 100755 --- a/cmd/smyrna/main.c +++ b/cmd/smyrna/main.c @@ -32,7 +32,7 @@ #include "menucallbacks.h" #include "gltemplate.h" #include "memory.h" -#include "md5.h" +#include "gvprpipe.h" #ifdef ENABLE_NLS #include "libintl.h" #endif diff --git a/cmd/smyrna/selection.c b/cmd/smyrna/selection.c index f3e45a474..0fe7cae2c 100755 --- a/cmd/smyrna/selection.c +++ b/cmd/smyrna/selection.c @@ -413,7 +413,6 @@ view->Topview->Graphdata.selectedEdges = static void update_cgraph_pos(topview_node* N) { char buf[512]; - double x, y; Agsym_t* pos; Agnode_t* obj=N->Node; diff --git a/cmd/smyrna/smyrna.vcproj b/cmd/smyrna/smyrna.vcproj index 32068743e..193aac7d3 100644 --- a/cmd/smyrna/smyrna.vcproj +++ b/cmd/smyrna/smyrna.vcproj @@ -353,6 +353,10 @@ RelativePath=".\gui\gui.c" > + + diff --git a/cmd/smyrna/topview.c b/cmd/smyrna/topview.c index 8004ad0ac..75c913809 100755 --- a/cmd/smyrna/topview.c +++ b/cmd/smyrna/topview.c @@ -319,7 +319,8 @@ static float set_gl_dot_size(topview * t) { static float dotsize; if (view->active_camera==-1) - dotsize = (float)GL_DOTSIZE_CONSTANT / view->zoom; +// dotsize = (float)GL_DOTSIZE_CONSTANT / view->zoom; + dotsize = 2.00; else dotsize = (float)GL_DOTSIZE_CONSTANT / view->cameras[view->active_camera]->r*(float)-1; @@ -487,7 +488,7 @@ static int drawtopviewnodes(Agraph_t * g) else if (view->defaultnodeshape==1) { draw_sphere(v->distorted_x - ddx, - v->distorted_y - ddy, v->distorted_z - ddz,0.25); + v->distorted_y - ddy, v->distorted_z - ddz,0.0025); } } diff --git a/cmd/smyrna/viewport.c b/cmd/smyrna/viewport.c index 0c7688d14..9bfe96def 100755 --- a/cmd/smyrna/viewport.c +++ b/cmd/smyrna/viewport.c @@ -1041,5 +1041,11 @@ void please_dont_wait(void) gtk_widget_hide(glade_xml_get_widget(xml, "frmWait")); } +int apply_gvpr(Agraph_t* g,char* prog) +{ +#ifdef WIN32 + Agraph_t* a=exec_gvpr(prog,g); +#endif +}