]> granicus.if.org Git - graphviz/commitdiff
*** empty log message ***
authorarif <devnull@localhost>
Mon, 7 Jul 2008 20:39:42 +0000 (20:39 +0000)
committerarif <devnull@localhost>
Mon, 7 Jul 2008 20:39:42 +0000 (20:39 +0000)
cmd/smyrna/draw.c
cmd/smyrna/draw.h
cmd/smyrna/gltemplate.c
cmd/smyrna/gui/topviewsettings.c
cmd/smyrna/smyrnadefs.h
cmd/smyrna/topfisheyeview.c
cmd/smyrna/topfisheyeview.h
cmd/smyrna/topview.c
cmd/smyrna/viewport.c
share/gui/smyrna.glade

index f2dd4e7c11ed8bfe4027356fcd0cf16b39643c7e..bdf0baeaf1a88eeafbfe3d0ad122541702705335 100755 (executable)
@@ -835,3 +835,15 @@ int draw_node_hintbox(GLfloat x,GLfloat y,GLfloat fs,GLfloat pad,GLfloat z,GLflo
 
 }
 
+static GLUquadric* sphere;
+void draw_sphere(float x,float y,float z,float r)
+{
+       if(!sphere)
+                       fisheyesphere=gluNewQuadric();
+       gluQuadricDrawStyle ( fisheyesphere, GLU_FILL );
+       glTranslatef(x,y,z);
+       gluSphere(fisheyesphere,r,SPHERE_SLICE_COUNT,SPHERE_SLICE_COUNT);
+       glTranslatef(-x,-y,-z);
+}
+
+
index a8473fabd67873f470c1b9f55eeec6d109053a0c..b2a883364d01b44dc96c9b0b5a84cb008914d6f1 100755 (executable)
@@ -44,4 +44,8 @@ extern RGBColor GetRGBColor(char *color);
 extern void drawBorders(ViewInfo * view);
 void drawEllipse(float xradius, float yradius,int angle1,int angle2);
 int draw_node_hintbox(GLfloat x,GLfloat y,GLfloat fs,GLfloat pad,GLfloat z,GLfloat kts,GLfloat z_offset);
+
+void draw_sphere(float x,float y,float z,float r);
+
 #endif
+
index 5a47ca1b08b55820326b8bc5c485ddff4553486e..aa9dabf2faead205b4683e6f2c2e67dd45cc0505 100755 (executable)
@@ -123,7 +123,7 @@ static void realize(GtkWidget * widget, gpointer data)
 
     /*smyrna does not use any ligthting affects but can be turned on for more effects in the future */
     GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 };
-    GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
+    GLfloat diffuse[] = { 0.5, 0.5, 0.5, 1.0 };
     GLfloat position[] = { 0.0, 3.0, 3.0, 0.0 };
 
     GLfloat lmodel_ambient[] = { 0.2f, 0.2f, 0.2f, 1.0f };
@@ -153,7 +153,7 @@ static void realize(GtkWidget * widget, gpointer data)
 
     glFrontFace(GL_CW);
 // glEnable (GL_LIGHTING);
-//  glEnable (GL_LIGHT0);
+// glEnable (GL_LIGHT0);
 //  glEnable (GL_AUTO_NORMAL);
 //  glEnable (GL_NORMALIZE);
     glEnable(GL_DEPTH_TEST);
index 9084592857b22c304255fd9406fe8443331a98d6..dc7eb1188d494390d79d1907e3a64bdc7f30313a 100644 (file)
@@ -139,27 +139,110 @@ static int get_spinbtn_widget_to_attribute(char *attribute,
     agattr(g, AGRAPH, attribute, buf);
     return 1;
 }
+static int get_scalebtn_widget_to_attribute(char *attribute,
+                          char *widget_name, Agraph_t * g)
+{
+    float value;
+    char buf[25];
+    value =
+       (float) gtk_range_get_value((GtkRange *)
+                                         glade_xml_get_widget(xml,
+                                                              widget_name));
+       sprintf(buf, "%f", value);
+    //      agattr(
+    agattr(g, AGRAPH, attribute, buf);
+    return 1;
+}
 
-
-int load_settings_from_graph(Agraph_t * g)
+static int set_scalebtn_widget_to_attribute(char *attribute, char *widget_name)
 {
     char *buf;
+    float value;
+    buf = agget(view->g[view->activeGraph], attribute);
+    if ((!buf) || (strcmp(buf, "") == 0))
+       buf = agget(view->default_attributes, attribute);
+    if (buf) {
+       value = (float) atof(buf);
+       gtk_range_set_value((GtkSpinButton *)
+                                 glade_xml_get_widget(xml, widget_name),
+                                 value);
+       return 1;
+    }
+    return 0;
+}
+static int set_combobox_widget(char *attribute,char *widget_name)
+{
+    char *buf;
+    float value;
+    buf = agget(view->g[view->activeGraph], attribute);
+
+    if ((!buf) || (strcmp(buf, "") == 0))
+       buf = agget(view->default_attributes, attribute);
+    if (buf)
+        {
+               gtk_combo_box_set_active(
+                               (GtkComboBox *)  glade_xml_get_widget(xml,widget_name),
+                               (int)value);
+
+           return 1;
+       }
+
+    return 0;
+}
+static int get_combobox_widget_to_attribute(char *attribute, char *widget_name, Agraph_t * g)
+{
+    char buf[25];
+    float value;
 
-    set_color_button_widget("bgcolor", "settingsColorBtn1");
+    value=
+       gtk_combo_box_get_active((GtkComboBox *)
+                                         glade_xml_get_widget(xml,
+                                                      widget_name));
+
+    sprintf(buf, "%f", value);
+    agattr(g, AGRAPH, attribute, buf);
+    return 1;
+
+
+}
+
+
+
+/*
+Q-What are these set and get functions ?
+A-These are functions to set and get data from GTK widgets based on what object they are
+User click on setting windows, all window parameters are updated from current graph,
+default values are stored in a template graph ""
+
+*/
+
+
+
+
+
+int load_settings_from_graph(Agraph_t * g)
+{
+       char *buf;      /*local buffer*/
+       
+       
+       
+       
+       
+       set_color_button_widget("bgcolor", "settingsColorBtn1");
     set_color_button_widget("bordercolor", "settingsColorBtn2");
     set_color_button_widget("gridcolor", "settingsColorBtn3");
     set_color_button_widget("highlightednodecolor", "settingsColorBtn6");
     set_color_button_widget("highlightededgecolor", "settingsColorBtn7");
     set_color_button_widget("selectednodecolor", "settingsColorBtn8");
     set_color_button_widget("selectededgecolor", "settingsColorBtn9");
-    get_color_button_widget_to_attribute("topologicaltopviewfinestcolor",
+    set_color_button_widget("topologicaltopviewfinestcolor",
                                         "settingsColorBtn9", g);
-    get_color_button_widget_to_attribute("topologicaltopviewcoarsestcolor",
+    set_color_button_widget("topologicaltopviewcoarsestcolor",
                                         "settingsColorBtn9", g);
 
     set_color_button_widget("topologicaltopviewfinestcolor",
                            "settingsColorBtn10");
-    set_color_button_widget("topologicaltopviewcoarsestcolor",
+    set_color_button_widget("topologicaltopviewcoarsestcolor   ",
                            "settingsColorBtn11");
 
 
@@ -188,7 +271,16 @@ int load_settings_from_graph(Agraph_t * g)
     set_checkbox_widget("topologicalfisheyelabelfocus",
                        "settingsChkBox18");
 
-    set_spinbtn_widget("defaultmagnifierwidth", "settingsspinbutton1");
+    set_checkbox_widget("defaultnodeshapegl",
+                       "settingsChkBox10_1");
+    set_checkbox_widget("defaultnodeshapespherical",
+                       "settingsChkBox10_2");
+    set_checkbox_widget("defaultnodeshaperectangular",
+                       "settingsChkBox10_3");
+
+       
+       
+       set_spinbtn_widget("defaultmagnifierwidth", "settingsspinbutton1");
     set_spinbtn_widget("defaultmagnifierheight", "settingsspinbutton2");
     set_spinbtn_widget("defaultmagnifierkts", "settingsspinbutton3");
     set_spinbtn_widget("defaultfisheyemagnifierradius",
@@ -201,9 +293,14 @@ int load_settings_from_graph(Agraph_t * g)
                       "settingsspinbutton7");
     set_spinbtn_widget("topologicalfisheyedistortionfactor",
                       "settingsspinbutton8");
+       
+       /*alpha values,1 for nodes 1 for edges*/
 
 
-    /*font selection box */
+       set_scalebtn_widget_to_attribute("defaultnodealpha", "settingsscale1"); /*node alpha*/
+       set_scalebtn_widget_to_attribute("defaultedgealpha", "settingsscale2"); /*edge alpha*/
+
+       /*font selection box */
     buf = agget(view->g[view->activeGraph], "defaultfontname");
     if (!buf)
        buf = agget(view->default_attributes, "defaultfontname");
@@ -220,7 +317,7 @@ int load_settings_from_graph(Agraph_t * g)
        /*select the right item in combo box */
        gtk_combo_box_set_active((GtkComboBox *)
                                 glade_xml_get_widget(xml,
-                                                     "settingsFontSelection"),
+                                                     "settingscombobox1"),
                                 atoi(buf));
     }
     return 1;
@@ -282,7 +379,10 @@ int update_graph_from_settings(Agraph_t * g)
        
        
        get_checkbox_widget_to_attribute("usermode", "settingsChkBox10", g);
-    get_checkbox_widget_to_attribute("nodesizewithdegree",
+
+
+
+       get_checkbox_widget_to_attribute("nodesizewithdegree",
                                     "settingsChkBox11", g);
     get_checkbox_widget_to_attribute("antialiasing", "settingsChkBox12",
                                     g);
@@ -316,8 +416,14 @@ int update_graph_from_settings(Agraph_t * g)
                                    "settingsspinbutton7", g);
     get_spinbtn_widget_to_attribute("topologicalfisheyedistortionfactor",
                                    "settingsspinbutton8", g);
+       /*added later*/
+       get_scalebtn_widget_to_attribute("defaultnodealpha",
+                                   "settingsscale1", g);
+       get_scalebtn_widget_to_attribute("defaultedgealpha",
+                                   "settingsscale2", g);
 
-    return 1;
+       get_combobox_widget_to_attribute("defaultnodeshape","settingscombobox1", g)     ;
+       return 1;
 }
 
 int show_settings_form()
index 1a6f79f95c522d4e6b33f409620717ea161f5046..4b62d5389df4c83bb6ed1c1b1b041abf16668661 100644 (file)
 #define NODE_ZOOM_LIMIT        -25.3
 #define NODE_CIRCLE_LIMIT      -7.3
 
+#define GL_DOTSIZE_CONSTANT -5
+
+
+#define SPHERE_SLICE_COUNT 6
+#define DOT_SIZE_CORRECTION_FAC 0.3
+
 typedef enum { nodshapedot,nodeshapecircle} node_shape;
 typedef enum { leftmousebutton,rightmousebutton,thirdmousebutton} clicked_mouse_button;
 typedef enum { MOUSE_ROTATE_X,MOUSE_ROTATE_Y,MOUSE_ROTATE_XY,MOUSE_ROTATE_Z} mouse_rotate_axis;
@@ -381,6 +387,12 @@ typedef struct _ViewInfo
        RGBColor selectedNodeColor;
        /*selected edge color*/
        RGBColor selectedEdgeColor;
+       /*default node alpha*/
+       float defaultnodealpha;
+       /*default edge alpha*/
+       float defaultedgealpha;
+       /*default node shape*/
+       int defaultnodeshape;
 
        /*default line width*/
        float LineWidth;
index 162c7463b06e4d82a43759be4a88960df9202db8..32c158982b64ec003dfe395e80e824c2c06383a4 100644 (file)
@@ -254,7 +254,7 @@ void prepare_topological_fisheye(topview* t)
        draws all level 0 nodes and edges, during animation
 */
 
-void drawtopologicalfisheye2(topview * t)
+int drawtopologicalfisheye2(topview * t)
 {
     int level, v, i, n;
     Hierarchy *hp = t->h;
@@ -277,6 +277,8 @@ void drawtopologicalfisheye2(topview * t)
                                        if(get_temp_coords(t,level,v,&x0,&y0,&R,&G,&B))
                                        {
                                                glColor3f((GLfloat)R,(GLfloat)G,(GLfloat)B);
+//                                             glColor3f((GLfloat) (hp->nlevels - level) /(GLfloat) hp->nlevels,(GLfloat) level / (GLfloat) hp->nlevels, 0);
+
                                                glVertex3f((GLfloat) x0, (GLfloat) y0, (GLfloat) 0);
                                        }
                        }
@@ -288,6 +290,7 @@ void drawtopologicalfisheye2(topview * t)
 
 
        //draw edges
+       glLineWidth(2);
        glBegin(GL_LINES);
     for (level = 0; level < hp->nlevels; level++)
        {
@@ -301,17 +304,20 @@ void drawtopologicalfisheye2(topview * t)
                                        for (i = 1; i < g[v].nedges; i++) 
                                        {
                                                double x, y;
+                                               float RR,GG,BB;
+                                               RR=0;GG=0;BB=0;
                                                n = g[v].edges[i];
-                                               if(get_temp_coords(t,level,n,&x,&y,&R,&G,&B))
+
+                                               if(get_temp_coords(t,level,n,&x,&y,&RR,&GG,&BB))
                                                {
                                                                if (((x0==0)||(x==0) || (y0==0) || (y==0)) &&(debug_mode))
                                                                {
-                                                                       /*printf ("(%f,%f)->(%f,%f)\n",x0,y0,x,y);*/
                                                                }
                                                                else
                                                                {
                                                                        glColor3f((GLfloat)R,(GLfloat)G,(GLfloat)B);
-//                                                                     glColor3f((GLfloat) (hp->nlevels - level) /     (GLfloat) hp->nlevels,(GLfloat) level / (GLfloat) hp->nlevels, 0);
+//                                                                     glColor3f(0,1,0);
+
                                                                        glVertex3f((GLfloat) x0, (GLfloat) y0,(GLfloat) 0);
                                                                        glVertex3f((GLfloat) x, (GLfloat) y,(GLfloat) 0);
                                                                }
@@ -325,7 +331,8 @@ void drawtopologicalfisheye2(topview * t)
                        
                }
     }
-    glEnd();
+    glEnd(); 
+       return 1;
 
 }
 int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,float *R,float *G,float *B)
@@ -334,6 +341,9 @@ int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,f
        ex_vtx_data *gg = hp->geom_graphs[level];
        /* v_data *g = hp->graphs[level]; */
        int OAL,AL;
+       double x0,y0,x1,y1;     
+       float R0,R1,G0,G1,B0,B1;
+
        OAL=gg[v].old_active_level;
        AL=gg[v].active_level;
        /*if ((OAL > level) && (AL>level))
@@ -341,7 +351,7 @@ int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,f
        if ((OAL < level) && (AL<level))
                return 0;
 
-       if (!t->animate)
+       /*if (!t->animate)
        {
                if (AL == level)
                {
@@ -353,14 +363,16 @@ int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,f
                        return 0;
        }
        else
-       {
+       {*/
 
-               double x0,y0,x1,y1;     
                x0=0;
                y0=0;
                x1=0;
                y1=0;
-
+               R0=1;R1=0;
+               G0=0;G1=1;
+               B0=0;B1=0;
+       
                get_active_frame(t);
                if ((OAL == level) && (AL==level))
                {
@@ -368,8 +380,9 @@ int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,f
                        y0=(double)gg[v].old_physical_y_coord;
                        x1=(double)gg[v].physical_x_coord;
                        y1=(double)gg[v].physical_y_coord;
-                       *G=0;
-                       *R=1;
+                       R0=1;R1=1;
+                       G0=0;G1=0;
+                       B0=0;B1=0;
 
                }
                if ((OAL == level) && (AL>level))
@@ -378,7 +391,9 @@ int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,f
                        y0=(double)gg[v].old_physical_y_coord;
                        find_physical_coords(t->h,level,v,&x1,&y1);
                        *G=view->active_frame/view->total_frames;
-                               *R=0;
+                       R0=1;R1=0;
+                       G0=0;G1=1;
+                       B0=0;B1=0;
 
                }
                if ((OAL > level) && (AL==level))
@@ -388,22 +403,29 @@ int get_temp_coords(topview* t,int level,int v,double* coord_x,double* coord_y,f
                        y1=(double)gg[v].physical_y_coord;
                        *R=view->active_frame/view->total_frames;
                        *G=1/(view->active_frame/view->total_frames+0.0000001);
+                       R0=1;R1=1;
+                       G0=0;G1=0;
+                       B0=0;B1=0;
+
 
                }
                if ((OAL > level) && (AL>level))
                {
                        find_old_physical_coords(t->h,level,v,&x0,&y0);
                        find_physical_coords(t->h,level,v,&x1,&y1);
-                       *G=1;
-                       *R=0;
+                       R0=0;R1=0;
+                       G0=1;G1=1;
+                       B0=0;B1=0;
 
                }
+               *R=R0+(R1-R0)/(double)view->total_frames*(double)(view->active_frame+1);
+               *G=     G0+(G1-G0)/(double)view->total_frames*(double)(view->active_frame+1);
+               *B=     B0+(B1-B0)/(double)view->total_frames*(double)(view->active_frame+1);
 
                get_interpolated_coords(x0,y0,x1,y1,view->active_frame,view->total_frames,coord_x,coord_y);
                
-               return 1;
-       }
-       return 0;
+       //}
+       return 1;
 }
 
 
@@ -544,8 +566,18 @@ void refresh_old_values(topview* t)
 }
 void get_interpolated_coords(double x0,double y0,double x1,double y1,int fr,int total_fr, double* x,double* y)
 {
-       *x=x0+(x1-x0)/(double)total_fr*(double)(fr+1);
-       *y=     y0+(y1-y0)/(double)total_fr*(double)(fr+1);
+       if (view->Topview->animate)
+       {
+               *x=x0+(x1-x0)/(double)total_fr*(double)(fr+1);
+               *y=     y0+(y1-y0)/(double)total_fr*(double)(fr+1);
+       }
+       else
+       {
+               *x=x1;
+               *y=     y1;
+       }
+
+
 }
 int get_active_frame(topview* t)
 {
@@ -568,7 +600,7 @@ int get_active_frame(topview* t)
        else
        {
                g_timer_stop(view->timer); 
-//             view->Topview->animate=0;
+               view->Topview->animate=0;
                return 0;
        }
 
index a7f26a2555543c0a94272d2ad8328622e3300b97..3e09b26781a114b72c9d8526bffff4c93371bf84 100644 (file)
@@ -23,7 +23,7 @@ void fisheye_spherical(double x_focus, double y_focus, double z_focus,
                       topview * t);
 void prepare_topological_fisheye(topview*);
 void drawtopologicalfisheye(topview * t);
-void drawtopologicalfisheye2(topview * t);
+int drawtopologicalfisheye2(topview * t);
 void changetopfishfocus(topview * t, float *x, float *y,
                                   float *z, int num_foci);
 void refresh_old_values(topview* t);
index d2c7f94a902a3e7e4dee4423d79c15825f82ec0d..4d8591fb92a56cad769b0a55fd82b76b209c8c8f 100755 (executable)
@@ -210,6 +210,77 @@ void preparetopview(Agraph_t * g, topview * t)
     t->picked_node_count = 0;
     t->picked_nodes = '\0';
 }
+/*
+       this function calculates and sets node size(opengl dots, they are squares not a dots
+       if anybody has any problem with dot size please just modify this function
+       active_camera=-1 means view is in 2D mode,0 and above means there is a 3D camera active.
+       I use different params for both situations since they are viewed differently..
+       If node shape is other than opengl dots, '#r' is replaced with the calculated value
+*/
+/*
+       Notes about xdot:
+       I am planning to combine small graphs , for that purpose if there is an xdot string attached the either node or 
+       edge and if a node's draw_xdot attribute is set , xdot is drawn for the object
+       example node:
+    A[draw_xdot="1",_draw_="S 6 -filled c 7 -#741818 C 7 -#741818 P 5 125 528 96 543 67 528 67 505 125 505 ", _ldraw_="F 14.000000 11 -Times-Roman c 7 -#eaeb2a T 96 516 0 22 3 -S24"]
+
+       smyrna draws a house instead of a dot.
+*/
+
+static float set_gl_dot_size(topview * t)
+{
+       float dotsize;
+       if (view->active_camera==-1)
+               dotsize = GL_DOTSIZE_CONSTANT / view->zoom;
+       else
+               dotsize = GL_DOTSIZE_CONSTANT / view->cameras[view->active_camera]->r*-1;
+
+       dotsize=dotsize * DOT_SIZE_CORRECTION_FAC;
+       if (dotsize <=1)
+               dotsize=1;
+       glPointSize(dotsize);
+       return dotsize;
+
+}
+
+static int begintopviewnodes(Agraph_t* g)
+{
+       switch (view->defaultnodeshape)
+       {
+       case 0:
+               set_gl_dot_size(view->Topview);         
+               glBegin(GL_POINTS);
+               break;
+       case 1:
+               set_gl_dot_size(view->Topview);         
+               break;
+       default:
+               set_gl_dot_size(view->Topview);         
+               glBegin(GL_POINTS);
+
+       };
+       return 1;
+}
+
+static int endtopviewnodes(Agraph_t* g)
+{
+       switch (view->defaultnodeshape)
+       {
+       case 0:
+               glEnd();
+               break;
+       case 1:
+               break;
+       default:
+               glEnd();
+               break;
+
+       };
+       return 1;
+}
+
+
+
 
 static int drawtopviewnodes(Agraph_t * g)
 {
@@ -217,20 +288,14 @@ static int drawtopviewnodes(Agraph_t * g)
     float ddx, ddy, ddz;
     int ind = 0;
     float dotsize = 0;
-    if (view->zoom > NODE_ZOOM_LIMIT) {
-       dotsize = 50 / view->zoom * -1;
-       if (dotsize > 1)
-           glPointSize(dotsize);
-       else
-           glPointSize(1);
+       dotsize=set_gl_dot_size(view->Topview);         //sets the size of the gl points
 
-
-       //draw nodes
        set_topview_options();
-       glBegin(GL_POINTS);
+       begintopviewnodes(g);
        for (ind = 0;
             ((ind < view->Topview->Nodecount) && (view->drawnodes));
-            ind++) {
+            ind++) 
+       {
            if (((-view->Topview->Nodes[ind].x / view->zoom > view->clipX1)
                 && (-view->Topview->Nodes[ind].x / view->zoom <
                     view->clipX2)
@@ -259,7 +324,7 @@ static int drawtopviewnodes(Agraph_t * g)
                } else          //get the color from node
                {
                    glColor4f(v->Color.R, v->Color.G, v->Color.B,
-                             v->node_alpha);
+                               v->node_alpha*view->defaultnodealpha);
                    ddx = 0;
                    ddy = 0;
                    ddz = 0;
@@ -269,12 +334,21 @@ static int drawtopviewnodes(Agraph_t * g)
                    zdepth = (float) Z_FORWARD_PLANE;
                else
                    zdepth = (float) Z_BACK_PLANE;
-               glVertex3f(v->distorted_x - ddx,
-                          v->distorted_y - ddy, v->distorted_z - ddz);
+
+                       if ((view->defaultnodeshape==0) || dotsize == 1)
+                       {
+                               glVertex3f(v->distorted_x - ddx,
+                               v->distorted_y - ddy, v->distorted_z - ddz);
+                       }
+                       else if (view->defaultnodeshape==1)
+                       {
+                               draw_sphere(v->distorted_x - ddx,
+                               v->distorted_y - ddy, v->distorted_z - ddz,0.25);
+
+                       }
            }
        }
-       glEnd();
-    }
+       endtopviewnodes(g);
     return 1;
 
 }
@@ -629,9 +703,9 @@ static int draw_topview_label(topview_node * v, float zdepth)
        fs = (v->degree ==
              1) ? (float) (log((double) v->degree +
                                1) *
-                           (double) 7) : (float) (log((double) v->degree +
+                           (double) 3) : (float) (log((double) v->degree +
                                                       (double) 0.5) *
-                                                  (double) 7);
+                                                  (double) 3);
        fs = fs * v->zoom_factor;
        if (OD_Selected(v->Node) == 1) {
            ddx = dx;
@@ -713,7 +787,7 @@ static int get_color_from_edge(topview_edge * e)
     int return_value = 0;
     float Alpha = 0;
     GtkHScale *AlphaScale =
-       (GtkHScale *) glade_xml_get_widget(xml, "frmHostAlphaScale");
+       (GtkHScale *) glade_xml_get_widget(xml, "settingsscale2");
     Alpha = (float) gtk_range_get_value((GtkRange *) AlphaScale);
 
     //check visibility;
@@ -1109,6 +1183,35 @@ static void menu_click_rotate_z(void *p)
     view->mouse.rotate_axis = MOUSE_ROTATE_Z;
 }
 
+static void menu_click_center(void *p)
+{
+       if (view->active_camera == -1)  /*2D mode*/
+       {       
+               view->panx=0;
+               view->pany=0;
+               view->panz=0;
+               view->zoom=-20;
+       }
+       else    /*there is active camera , adjust it to look at the center*/
+       {
+               view->cameras[view->active_camera]->targetx=0;
+               view->cameras[view->active_camera]->targety=0;
+               view->cameras[view->active_camera]->r=20;
+
+       }
+}
+
+/*1) 3D select or identify.
+2) Should 3D nodes have a size? (Strange behavior: some 3D views have large node sizes. Why the difference?)
+3) Sanity button - if I get lost in 3D, reset the viewpoint so that I have a good view of the graph
+4) Additional selection options when selecting nodes - at present, we do union - nice to have intersection, subtraction
+5) User control of alpha, so I can fade out the edges.
+
+I'll see if I can track down the color bug.*/
+
+
+
+
 static char *smyrna_icon_pan;
 static char *smyrna_icon_zoom;
 static char *smyrna_icon_zoomplus;
@@ -1246,7 +1349,8 @@ static glCompSet *glcreate_gl_topview_menu()
     b->panel = p;
     b->groupid = 1;
     b->callbackfunc = menu_click_rotate_xy;
-    glCompSetAddButton(s, b);
+
+       glCompSetAddButton(s, b);
     b = glCompButtonNew(125, 231, 40, 20, "Z", '\0', 0, 0);
     b->customptr = view;
     b->panel = p;
@@ -1254,6 +1358,19 @@ static glCompSet *glcreate_gl_topview_menu()
     b->callbackfunc = menu_click_rotate_z;
     glCompSetAddButton(s, b);
 
+       //sanity button to center the drawing and fit it in the screen
+    b = glCompButtonNew(80, 201, 90, 20, "center", '\0', 0, 0);
+    b->customptr = view;
+    b->panel = p;
+    b->groupid = 0;
+    b->callbackfunc = menu_click_center;
+       b->color.R=0;
+       b->color.G=1;
+       b->color.B=0;
+    glCompSetAddButton(s, b);
+
+
+
 
     //pan button
     b = glCompButtonNew(5, 120, 72, 72, "adasasds", smyrna_icon_pan, 72,
index 4ced3651eb52549fa57f6a5e9c03ba2c3357cb68..b3acd33f069a9cfa41232de2e878dc095d62781a 100755 (executable)
@@ -156,7 +156,10 @@ set_viewport_settings_from_template(ViewInfo * view, Agraph_t * g)
                                  get_attribute_value("gridsize", view,
                                                      g));
 
-    view->gridVisible = atoi(get_attribute_value("gridvisible", view, g));
+       view->defaultnodeshape=atoi(buf=get_attribute_value("defaultnodeshape", view,g));
+
+       
+       view->gridVisible = atoi(get_attribute_value("gridvisible", view, g));
 
     //mouse mode=pan
 
@@ -205,6 +208,14 @@ set_viewport_settings_from_template(ViewInfo * view, Agraph_t * g)
     view->highlightedEdgeColor.A =
        (float)
        atof(get_attribute_value("highlightededgecoloralpha", view, g));
+       view->defaultnodealpha =
+       (float)
+       atof(get_attribute_value("defaultnodealpha", view, g));
+
+       view->defaultedgealpha =
+       (float)
+       atof(get_attribute_value("defaultedgealpha", view, g));
+
 
 
 /*
@@ -1186,6 +1197,11 @@ int gl_main_expose() {
        return 1;
 }
 
+
+/*following code does not do what i like it to do*/
+/*I liked to have a please wait window on the screen all i got was the outer borders of the window
+GTK requires a custom widget expose function 
+*/
 void please_wait()
 {
     gtk_widget_hide(glade_xml_get_widget(xml, "frmWait"));
index 812c35960add5476cdd23f5c457e6f7161d5bddf..de174e0f0277deba189b8c68467c346f53af91bb 100755 (executable)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.0.2 on Tue Apr 29 12:02:33 2008 by arif@DT-ARIF-->
+<!--Generated with glade3 3.0.2 on Mon Jul 07 16:39:28 2008 by arif@DT-ARIF-->
 <glade-interface>
   <widget class="GtkWindow" id="frmObject">
     <property name="width_request">470</property>
@@ -787,7 +787,7 @@ topview</property>
                             <child>
                               <widget class="GtkMenuItem" id="mDotLayout">
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">dot</property>
+                                <property name="label" translatable="yes">Dot</property>
                                 <property name="use_underline">True</property>
                                 <signal name="activate" handler="mDorSlot"/>
                               </widget>
@@ -795,7 +795,7 @@ topview</property>
                             <child>
                               <widget class="GtkMenuItem" id="mNeatoLayout">
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">neato</property>
+                                <property name="label" translatable="yes">Neato</property>
                                 <property name="use_underline">True</property>
                                 <signal name="activate" handler="mNeatoSlot"/>
                               </widget>
@@ -803,7 +803,7 @@ topview</property>
                             <child>
                               <widget class="GtkMenuItem" id="mTwopiLayout">
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">twopi</property>
+                                <property name="label" translatable="yes">Twopi</property>
                                 <property name="use_underline">True</property>
                                 <signal name="activate" handler="mTwopiSlot"/>
                               </widget>
@@ -811,7 +811,7 @@ topview</property>
                             <child>
                               <widget class="GtkMenuItem" id="mCircoLayout">
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">circo</property>
+                                <property name="label" translatable="yes">Circo</property>
                                 <property name="use_underline">True</property>
                                 <signal name="activate" handler="mCircoSlot"/>
                               </widget>
@@ -819,7 +819,7 @@ topview</property>
                             <child>
                               <widget class="GtkMenuItem" id="mFdpLayout">
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">fdp</property>
+                                <property name="label" translatable="yes">Fdp</property>
                                 <property name="use_underline">True</property>
                                 <signal name="activate" handler="mFdpSlot"/>
                               </widget>
@@ -970,7 +970,7 @@ topview</property>
                 <property name="width_request">80</property>
                 <property name="height_request">26</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Open graph</property>
+                <property name="label" translatable="yes">Open Graph</property>
                 <signal name="clicked" handler="mOpenSlot" object="btnOpenGraph"/>
               </widget>
               <packing>
@@ -983,7 +983,7 @@ topview</property>
                 <property name="width_request">80</property>
                 <property name="height_request">26</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Save graph</property>
+                <property name="label" translatable="yes">Save Graph</property>
                 <signal name="clicked" handler="mSaveSlot" object="btnSaveGraph"/>
               </widget>
               <packing>
@@ -996,7 +996,7 @@ topview</property>
                 <property name="width_request">96</property>
                 <property name="height_request">26</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Remove graph</property>
+                <property name="label" translatable="yes">Remove Graph</property>
                 <signal name="clicked" handler="mDeleteSlot" object="btnRemoveGraph"/>
               </widget>
               <packing>
@@ -1009,7 +1009,7 @@ topview</property>
                 <property name="width_request">80</property>
                 <property name="height_request">26</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">New graph</property>
+                <property name="label" translatable="yes">New Graph</property>
                 <signal name="clicked" handler="mNewSlot" object="btnNewGraph"/>
               </widget>
               <packing>
@@ -1066,7 +1066,7 @@ topview</property>
                 <property name="width_request">60</property>
                 <property name="height_request">26</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">circo</property>
+                <property name="label" translatable="yes">Circo</property>
                 <signal name="clicked" handler="mCircoSlot" object="btnCirro"/>
               </widget>
               <packing>
@@ -1093,7 +1093,7 @@ topview</property>
                 <property name="width_request">62</property>
                 <property name="height_request">26</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">neato</property>
+                <property name="label" translatable="yes">Neato</property>
                 <property name="relief">GTK_RELIEF_HALF</property>
                 <property name="yalign">0.54000002145767212</property>
                 <property name="image_position">GTK_POS_BOTTOM</property>
@@ -1986,36 +1986,37 @@ topview</property>
                 <property name="n_rows">3</property>
                 <property name="n_columns">2</property>
                 <child>
-                  <widget class="GtkHBox" id="hbox2">
+                  <widget class="GtkHBox" id="hbox4">
                     <property name="visible">True</property>
                     <child>
-                      <widget class="GtkRadioButton" id="rbTVFilterSel1">
+                      <widget class="GtkRadioButton" id="rbTVFilterHigh1">
                         <property name="width_request">15</property>
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">All</property>
+                        <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="rbTVFilterSel2">
+                      <widget class="GtkRadioButton" id="rbTVFilterHigh2">
                         <property name="width_request">75</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Selected</property>
+                        <property name="label" translatable="yes">Highlighted</property>
                         <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">rbTVFilterSel1</property>
+                        <property name="group">rbTVFilterHigh1</property>
                       </widget>
                       <packing>
                         <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="rbTVFilterSel3">
+                      <widget class="GtkRadioButton" id="rbTVFilterHigh3">
                         <property name="width_request">100</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Non-selected</property>
+                        <property name="label" translatable="yes">Not Highlighted</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">rbTVFilterSel1</property>
+                        <property name="group">rbTVFilterHigh1</property>
                       </widget>
                       <packing>
                         <property name="position">2</property>
@@ -2025,33 +2026,6 @@ topview</property>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Selection</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label9">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Visible</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label10">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Highlighted</property>
-                  </widget>
-                  <packing>
                     <property name="top_attach">2</property>
                     <property name="bottom_attach">3</property>
                   </packing>
@@ -2101,37 +2075,65 @@ topview</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkHBox" id="hbox4">
+                  <widget class="GtkLabel" id="label10">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Highlighted</property>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label9">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Visible</property>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Selection</property>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkHBox" id="hbox2">
                     <property name="visible">True</property>
                     <child>
-                      <widget class="GtkRadioButton" id="rbTVFilterHigh1">
+                      <widget class="GtkRadioButton" id="rbTVFilterSel1">
                         <property name="width_request">15</property>
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">All</property>
-                        <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="rbTVFilterHigh2">
+                      <widget class="GtkRadioButton" id="rbTVFilterSel2">
                         <property name="width_request">75</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Highlighted</property>
+                        <property name="label" translatable="yes">Selected</property>
                         <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">rbTVFilterHigh1</property>
+                        <property name="group">rbTVFilterSel1</property>
                       </widget>
                       <packing>
                         <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="rbTVFilterHigh3">
+                      <widget class="GtkRadioButton" id="rbTVFilterSel3">
                         <property name="width_request">100</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Not Highlighted</property>
+                        <property name="label" translatable="yes">Non-selected</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">rbTVFilterHigh1</property>
+                        <property name="group">rbTVFilterSel1</property>
                       </widget>
                       <packing>
                         <property name="position">2</property>
@@ -2141,8 +2143,6 @@ topview</property>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
                   </packing>
                 </child>
               </widget>
@@ -2178,54 +2178,48 @@ topview</property>
                 <property name="n_rows">2</property>
                 <property name="n_columns">5</property>
                 <child>
-                  <widget class="GtkLabel" id="label14">
-                    <property name="width_request">2</property>
+                  <widget class="GtkLabel" id="label19">
                     <property name="visible">True</property>
                     <property name="label" translatable="yes">&gt;=</property>
                   </widget>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
+                    <property name="left_attach">3</property>
+                    <property name="right_attach">4</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label15">
+                  <widget class="GtkLabel" id="label18">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">&gt;=</property>
+                    <property name="label" translatable="yes">DATA 2</property>
                   </widget>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkEntry" id="edtTVFilterMinData1">
-                    <property name="width_request">180</property>
-                    <property name="visible">True</property>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="edtTVFilterMaxData1">
-                    <property name="width_request">180</property>
+                  <widget class="GtkEntry" id="edtTVFilterMaxData2">
                     <property name="visible">True</property>
                   </widget>
                   <packing>
                     <property name="left_attach">4</property>
                     <property name="right_attach">5</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label16">
-                    <property name="width_request">63</property>
+                  <widget class="GtkEntry" id="edtTVFilterMinData2">
+                    <property name="width_request">180</property>
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">DATA 1</property>
                   </widget>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
@@ -2239,48 +2233,54 @@ topview</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkEntry" id="edtTVFilterMinData2">
-                    <property name="width_request">180</property>
+                  <widget class="GtkLabel" id="label16">
+                    <property name="width_request">63</property>
                     <property name="visible">True</property>
+                    <property name="label" translatable="yes">DATA 1</property>
                   </widget>
                   <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkEntry" id="edtTVFilterMaxData2">
+                  <widget class="GtkEntry" id="edtTVFilterMaxData1">
+                    <property name="width_request">180</property>
                     <property name="visible">True</property>
                   </widget>
                   <packing>
                     <property name="left_attach">4</property>
                     <property name="right_attach">5</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label18">
+                  <widget class="GtkEntry" id="edtTVFilterMinData1">
+                    <property name="width_request">180</property>
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">DATA 2</property>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label15">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&gt;=</property>
                   </widget>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label19">
+                  <widget class="GtkLabel" id="label14">
+                    <property name="width_request">2</property>
                     <property name="visible">True</property>
                     <property name="label" translatable="yes">&gt;=</property>
                   </widget>
                   <packing>
-                    <property name="left_attach">3</property>
-                    <property name="right_attach">4</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
                   </packing>
                 </child>
               </widget>
@@ -2530,67 +2530,67 @@ topview</property>
                     <property name="n_rows">3</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkEntry" id="entry3">
-                        <property name="width_request">56</property>
+                      <widget class="GtkLabel" id="label35">
                         <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Num. of fine Nodes</property>
                       </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                      </packing>
                     </child>
                     <child>
-                      <widget class="GtkEntry" id="entry2">
-                        <property name="width_request">56</property>
+                      <widget class="GtkLabel" id="label36">
                         <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Coersening factor</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkEntry" id="entry1">
-                        <property name="width_request">56</property>
+                      <widget class="GtkLabel" id="label37">
                         <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Distortion factor</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label37">
+                      <widget class="GtkEntry" id="entry1">
+                        <property name="width_request">56</property>
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Distortion factor</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label36">
+                      <widget class="GtkEntry" id="entry2">
+                        <property name="width_request">56</property>
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Coersening factor</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label35">
+                      <widget class="GtkEntry" id="entry3">
+                        <property name="width_request">56</property>
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Num. of fine Nodes</property>
                       </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
                     </child>
                   </widget>
                   <packing>
@@ -2820,140 +2820,167 @@ topview</property>
                       <placeholder/>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox5-3">
+                      <widget class="GtkCheckButton" id="settingsChkBox5-2">
                         <property name="visible">True</property>
                         <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
                         <property name="left_attach">2</property>
                         <property name="right_attach">3</property>
-                        <property name="top_attach">11</property>
-                        <property name="bottom_attach">12</property>
+                        <property name="top_attach">10</property>
+                        <property name="bottom_attach">11</property>
                         <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label83">
+                      <widget class="GtkCheckButton" id="settingsChkBox5-1">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Draw Labels</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">11</property>
-                        <property name="bottom_attach">12</property>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                        <property name="top_attach">9</property>
+                        <property name="bottom_attach">10</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkColorButton" id="settingsColorBtn9">
+                      <widget class="GtkLabel" id="label82">
                         <property name="visible">True</property>
-                        <property name="color">#000000000000</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Draw Edges</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">8</property>
-                        <property name="bottom_attach">9</property>
+                        <property name="top_attach">10</property>
+                        <property name="bottom_attach">11</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label45">
+                      <widget class="GtkLabel" id="label81">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Selected Edge Color</property>
+                        <property name="label" translatable="yes">Draw Nodes</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">8</property>
-                        <property name="bottom_attach">9</property>
+                        <property name="top_attach">9</property>
+                        <property name="bottom_attach">10</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox5">
+                      <widget class="GtkLabel" id="label31">
                         <property name="visible">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Background Color</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkColorButton" id="settingsColorBtn1">
+                        <property name="visible">True</property>
+                        <property name="color">#000000000000</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">2</property>
-                        <property name="right_attach">3</property>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
-                        <property name="x_options">GTK_EXPAND</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox4">
+                      <widget class="GtkLabel" id="label32">
                         <property name="visible">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Border Color</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">2</property>
-                        <property name="right_attach">3</property>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                        <property name="x_options">GTK_EXPAND</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox3">
+                      <widget class="GtkLabel" id="label39">
                         <property name="visible">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Grid Color</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">2</property>
-                        <property name="right_attach">3</property>
                         <property name="top_attach">2</property>
                         <property name="bottom_attach">3</property>
-                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox2">
+                      <widget class="GtkLabel" id="label40">
                         <property name="visible">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Randomize Node Colors</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">2</property>
-                        <property name="right_attach">3</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_EXPAND</property>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkColorButton" id="settingsColorBtn8">
+                      <widget class="GtkLabel" id="label41">
                         <property name="visible">True</property>
-                        <property name="color">#000000000000</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Randomize Edge Colors</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">7</property>
-                        <property name="bottom_attach">8</property>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkColorButton" id="settingsColorBtn7">
+                      <widget class="GtkLabel" id="label42">
                         <property name="visible">True</property>
-                        <property name="color">#000000000000</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Highlighted Node Color</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label43">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Highlighted Edge Color</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="top_attach">6</property>
                         <property name="bottom_attach">7</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkColorButton" id="settingsColorBtn6">
+                      <widget class="GtkLabel" id="label44">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Selected Node Color</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">7</property>
+                        <property name="bottom_attach">8</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkColorButton" id="settingsColorBtn2">
                         <property name="visible">True</property>
                         <property name="color">#000000000000</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">5</property>
-                        <property name="bottom_attach">6</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
@@ -2969,166 +2996,139 @@ topview</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkColorButton" id="settingsColorBtn2">
+                      <widget class="GtkColorButton" id="settingsColorBtn6">
                         <property name="visible">True</property>
                         <property name="color">#000000000000</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label44">
+                      <widget class="GtkColorButton" id="settingsColorBtn7">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Selected Node Color</property>
+                        <property name="color">#000000000000</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">7</property>
-                        <property name="bottom_attach">8</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">6</property>
+                        <property name="bottom_attach">7</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label43">
+                      <widget class="GtkColorButton" id="settingsColorBtn8">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Highlighted Edge Color</property>
+                        <property name="color">#000000000000</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">6</property>
-                        <property name="bottom_attach">7</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">7</property>
+                        <property name="bottom_attach">8</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label42">
+                      <widget class="GtkCheckButton" id="settingsChkBox2">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Highlighted Node Color</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">5</property>
-                        <property name="bottom_attach">6</property>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label41">
+                      <widget class="GtkCheckButton" id="settingsChkBox3">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Randomize Edge Colors</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label40">
+                      <widget class="GtkCheckButton" id="settingsChkBox4">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Randomize Node Colors</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
                         <property name="top_attach">3</property>
                         <property name="bottom_attach">4</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label39">
+                      <widget class="GtkCheckButton" id="settingsChkBox5">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Grid Color</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label32">
+                      <widget class="GtkLabel" id="label45">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Border Color</property>
+                        <property name="label" translatable="yes">Selected Edge Color</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="top_attach">8</property>
+                        <property name="bottom_attach">9</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkColorButton" id="settingsColorBtn1">
+                      <widget class="GtkColorButton" id="settingsColorBtn9">
                         <property name="visible">True</property>
                         <property name="color">#000000000000</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="top_attach">8</property>
+                        <property name="bottom_attach">9</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label31">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Background Color</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label81">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Draw Nodes</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">9</property>
-                        <property name="bottom_attach">10</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label82">
+                      <widget class="GtkLabel" id="label83">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Draw Edges</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">10</property>
-                        <property name="bottom_attach">11</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox5-1">
-                        <property name="visible">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="label" translatable="yes">Draw Labels</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">2</property>
-                        <property name="right_attach">3</property>
-                        <property name="top_attach">9</property>
-                        <property name="bottom_attach">10</property>
-                        <property name="x_options">GTK_EXPAND</property>
+                        <property name="top_attach">11</property>
+                        <property name="bottom_attach">12</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox5-2">
+                      <widget class="GtkCheckButton" id="settingsChkBox5-3">
                         <property name="visible">True</property>
                         <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
                         <property name="left_attach">2</property>
                         <property name="right_attach">3</property>
-                        <property name="top_attach">10</property>
-                        <property name="bottom_attach">11</property>
+                        <property name="top_attach">11</property>
+                        <property name="bottom_attach">12</property>
                         <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
@@ -3274,65 +3274,86 @@ topview</property>
                 <property name="visible">True</property>
                 <child>
                   <widget class="GtkTable" id="table5">
-                    <property name="width_request">363</property>
-                    <property name="height_request">192</property>
+                    <property name="width_request">397</property>
+                    <property name="height_request">266</property>
                     <property name="visible">True</property>
-                    <property name="n_rows">4</property>
+                    <property name="n_rows">6</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label49">
+                      <widget class="GtkComboBox" id="settingscombobox1">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Advanced Mode</property>
+                        <property name="active">0</property>
+                        <property name="items" translatable="yes">OpenGL dots
+Spherical
+Custom</property>
                       </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label50">
+                      <widget class="GtkHScale" id="settingsscale2">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Node Shape</property>
+                        <property name="adjustment">1 0 1 0.01 0 0</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label51">
+                      <widget class="GtkHScale" id="settingsscale1">
+                        <property name="visible">True</property>
+                        <property name="adjustment">1 0 1 0.01 0 0</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label85">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Node Size with Degree</property>
+                        <property name="label" translatable="yes">Edge Alpha</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label52">
+                      <widget class="GtkLabel" id="label84">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Anti-aliasing</property>
+                        <property name="label" translatable="yes">Node Alpha</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox10">
+                      <widget class="GtkCheckButton" id="settingsChkBox12">
                         <property name="visible">True</property>
                         <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"></property>
+                        <property name="y_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
@@ -3346,43 +3367,69 @@ topview</property>
                         <property name="top_attach">2</property>
                         <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"></property>
+                        <property name="y_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkCheckButton" id="settingsChkBox12">
+                      <widget class="GtkCheckButton" id="settingsChkBox10">
                         <property name="visible">True</property>
                         <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_EXPAND</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label52">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Anti-aliasing</property>
+                      </widget>
+                      <packing>
                         <property name="top_attach">3</property>
                         <property name="bottom_attach">4</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"></property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkComboBox" id="settingsFontSelection">
+                      <widget class="GtkLabel" id="label51">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Node Size with Degree</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label50">
                         <property name="visible">True</property>
-                        <property name="items" translatable="yes">openGL dots
-Circle
-Box
-</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Node Shape</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
-                        <property name="y_options"></property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="label49">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Advanced Mode</property>
+                      </widget>
+                    </child>
                   </widget>
                   <packing>
-                    <property name="x">29</property>
-                    <property name="y">34</property>
+                    <property name="x">28</property>
+                    <property name="y">26</property>
                   </packing>
                 </child>
               </widget>
@@ -3416,100 +3463,100 @@ Box
                     <property name="n_columns">2</property>
                     <property name="row_spacing">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label56">
-                        <property name="width_request">84</property>
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Width</property>
-                        <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_EXPAND</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSpinButton" id="settingsspinbutton2">
+                      <widget class="GtkSpinButton" id="settingsspinbutton3">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">3 0 5000 1 50 10</property>
+                        <property name="adjustment">2 2 20 1 50 10</property>
+                        <property name="digits">2</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="settingsspinbutton1">
-                        <property name="width_request">128</property>
+                      <widget class="GtkLabel" id="label61">
+                        <property name="width_request">84</property>
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="adjustment">3 0 5000 1 50 10</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Zoom X</property>
+                        <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label57">
+                      <widget class="GtkLabel" id="label58">
+                        <property name="width_request">84</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
-                        <property name="xpad">5</property>
                         <property name="label" translatable="yes">Height</property>
+                        <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label58">
-                        <property name="width_request">84</property>
+                      <widget class="GtkLabel" id="label57">
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
+                        <property name="xpad">5</property>
                         <property name="label" translatable="yes">Height</property>
-                        <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label61">
-                        <property name="width_request">84</property>
+                      <widget class="GtkSpinButton" id="settingsspinbutton1">
+                        <property name="width_request">128</property>
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Zoom X</property>
-                        <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">3 0 5000 1 50 10</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options">GTK_EXPAND</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="settingsspinbutton3">
+                      <widget class="GtkSpinButton" id="settingsspinbutton2">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">2 2 20 1 50 10</property>
-                        <property name="digits">2</property>
+                        <property name="adjustment">3 0 5000 1 50 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="label56">
+                        <property name="width_request">84</property>
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Width</property>
+                        <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_EXPAND</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="x">37</property>
@@ -3575,54 +3622,54 @@ Box
                     <property name="n_columns">2</property>
                     <property name="row_spacing">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label63">
+                      <widget class="GtkLabel" id="label65">
                         <property name="width_request">84</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Distortion</property>
+                        <property name="label" translatable="yes">Radius</property>
                         <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="settingsspinbutton4">
-                        <property name="width_request">128</property>
+                      <widget class="GtkSpinButton" id="settingsspinbutton5">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">5 0 5000 1 50 10</property>
+                        <property name="adjustment">4 0 5000 1 50 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="settingsspinbutton5">
+                      <widget class="GtkSpinButton" id="settingsspinbutton4">
+                        <property name="width_request">128</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">4 0 5000 1 50 10</property>
+                        <property name="adjustment">5 0 5000 1 50 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label65">
+                      <widget class="GtkLabel" id="label63">
                         <property name="width_request">84</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Radius</property>
+                        <property name="label" translatable="yes">Distortion</property>
                         <property name="wrap_mode">PANGO_WRAP_WORD_CHAR</property>
                       </widget>
                       <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_EXPAND</property>
                       </packing>
                     </child>
@@ -3674,40 +3721,31 @@ Box
                           <placeholder/>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="label66">
-                            <property name="width_request">1</property>
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                            <property name="xpad">5</property>
-                            <property name="label" translatable="yes"># of fine nodes</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkSpinButton" id="settingsspinbutton6">
+                          <widget class="GtkSpinButton" id="settingsspinbutton8">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="adjustment">0 0 9999999 1 10 10</property>
+                            <property name="adjustment">0 0 9999999 0.10000000000000001 10 10</property>
+                            <property name="digits">4</property>
                           </widget>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="label67">
-                            <property name="width_request">1</property>
+                          <widget class="GtkSpinButton" id="settingsspinbutton7">
                             <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                            <property name="xpad">5</property>
-                            <property name="label" translatable="yes">Coarsening factor</property>
+                            <property name="can_focus">True</property>
+                            <property name="adjustment">0 0 9999999 0.10000000000000001 10 10</property>
+                            <property name="digits">4</property>
                           </widget>
                           <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
                             <property name="top_attach">1</property>
                             <property name="bottom_attach">2</property>
-                            <property name="x_options">GTK_FILL</property>
                           </packing>
                         </child>
                         <child>
@@ -3725,31 +3763,40 @@ Box
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkSpinButton" id="settingsspinbutton7">
+                          <widget class="GtkLabel" id="label67">
+                            <property name="width_request">1</property>
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="adjustment">0 0 9999999 0.10000000000000001 10 10</property>
-                            <property name="digits">4</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Coarsening factor</property>
                           </widget>
                           <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
                             <property name="top_attach">1</property>
                             <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkSpinButton" id="settingsspinbutton8">
+                          <widget class="GtkSpinButton" id="settingsspinbutton6">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="adjustment">0 0 9999999 0.10000000000000001 10 10</property>
-                            <property name="digits">4</property>
+                            <property name="adjustment">0 0 9999999 1 10 10</property>
                           </widget>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label66">
+                            <property name="width_request">1</property>
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes"># of fine nodes</property>
+                          </widget>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
                           </packing>
                         </child>
                       </widget>
@@ -3774,70 +3821,70 @@ Box
                         <property name="n_rows">2</property>
                         <property name="n_columns">3</property>
                         <child>
-                          <widget class="GtkCheckButton" id="settingsChkBox13">
+                          <widget class="GtkCheckButton" id="settingsChkBox18">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Dist 2 limit</property>
+                            <property name="label" translatable="yes">Label focus</property>
                             <property name="draw_indicator">True</property>
                           </widget>
+                          <packing>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="settingsChkBox14">
+                          <widget class="GtkCheckButton" id="settingsChkBox17">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Animate</property>
+                            <property name="label" translatable="yes">Color edges</property>
                             <property name="draw_indicator">True</property>
                           </widget>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="settingsChkBox15">
+                          <widget class="GtkCheckButton" id="settingsChkBox16">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Label fine nodes</property>
+                            <property name="label" translatable="yes">Color nodes</property>
                             <property name="draw_indicator">True</property>
                           </widget>
                           <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="settingsChkBox16">
+                          <widget class="GtkCheckButton" id="settingsChkBox15">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Color nodes</property>
+                            <property name="label" translatable="yes">Label fine nodes</property>
                             <property name="draw_indicator">True</property>
                           </widget>
                           <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
+                            <property name="left_attach">2</property>
+                            <property name="right_attach">3</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="settingsChkBox17">
+                          <widget class="GtkCheckButton" id="settingsChkBox14">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Color edges</property>
+                            <property name="label" translatable="yes">Animate</property>
                             <property name="draw_indicator">True</property>
                           </widget>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkCheckButton" id="settingsChkBox18">
+                          <widget class="GtkCheckButton" id="settingsChkBox13">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Label focus</property>
+                            <property name="label" translatable="yes">Dist 2 limit</property>
                             <property name="draw_indicator">True</property>
                           </widget>
-                          <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
                         </child>
                       </widget>
                       <packing>
@@ -3876,7 +3923,18 @@ Box
                           <placeholder/>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="label70">
+                          <widget class="GtkColorButton" id="settingsColorBtn11">
+                            <property name="height_request">47</property>
+                            <property name="visible">True</property>
+                            <property name="color">#000000000000</property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">4</property>
+                            <property name="right_attach">5</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label71">
                             <property name="width_request">122</property>
                             <property name="height_request">32</property>
                             <property name="visible">True</property>
@@ -3885,6 +3943,8 @@ Box
                             <property name="label" translatable="yes">Finest:</property>
                           </widget>
                           <packing>
+                            <property name="left_attach">3</property>
+                            <property name="right_attach">4</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"></property>
                           </packing>
@@ -3900,7 +3960,7 @@ Box
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkLabel" id="label71">
+                          <widget class="GtkLabel" id="label70">
                             <property name="width_request">122</property>
                             <property name="height_request">32</property>
                             <property name="visible">True</property>
@@ -3909,23 +3969,10 @@ Box
                             <property name="label" translatable="yes">Finest:</property>
                           </widget>
                           <packing>
-                            <property name="left_attach">3</property>
-                            <property name="right_attach">4</property>
                             <property name="x_options">GTK_FILL</property>
                             <property name="y_options"></property>
                           </packing>
                         </child>
-                        <child>
-                          <widget class="GtkColorButton" id="settingsColorBtn11">
-                            <property name="height_request">47</property>
-                            <property name="visible">True</property>
-                            <property name="color">#000000000000</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">4</property>
-                            <property name="right_attach">5</property>
-                          </packing>
-                        </child>
                       </widget>
                       <packing>
                         <property name="expand">False</property>
@@ -4028,26 +4075,44 @@ Box
                 <property name="n_rows">9</property>
                 <property name="n_columns">1</property>
                 <child>
-                  <widget class="GtkTable" id="table14">
+                  <widget class="GtkLabel" id="lblPosition">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0.89999997615814209</property>
+                    <property name="xpad">5</property>
+                    <property name="label" translatable="yes">Position</property>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator14">
+                    <property name="height_request">8</property>
+                    <property name="visible">True</property>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkTable" id="table12">
                     <property name="visible">True</property>
                     <property name="n_rows">3</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label79">
-                        <property name="width_request">8</property>
+                      <widget class="GtkLabel" id="label64">
+                        <property name="width_request">50</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Z</property>
+                        <property name="label" translatable="yes">X</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label78">
+                      <widget class="GtkLabel" id="label72">
                         <property name="width_request">7</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
@@ -4061,22 +4126,24 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label62">
-                        <property name="width_request">50</property>
+                      <widget class="GtkLabel" id="label73">
+                        <property name="width_request">8</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">X</property>
+                        <property name="label" translatable="yes">Z</property>
                       </widget>
                       <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton7">
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton1">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">100 -360 360 1 10 10</property>
+                        <property name="adjustment">0 -500000 50000 1 10 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
@@ -4084,10 +4151,10 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton8">
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton2">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">1 -360 360 1 10 10</property>
+                        <property name="adjustment">100 -500000 500000 1 10 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
@@ -4097,10 +4164,10 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton9">
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton3">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">100 -360 360 1 10 10</property>
+                        <property name="adjustment">-50000 -50000 50000 1 10 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
@@ -4111,43 +4178,20 @@ Box
                     </child>
                   </widget>
                   <packing>
-                    <property name="top_attach">8</property>
-                    <property name="bottom_attach">9</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHSeparator" id="hseparator16">
-                    <property name="height_request">8</property>
-                    <property name="visible">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">7</property>
-                    <property name="bottom_attach">8</property>
-                    <property name="y_options">GTK_FILL</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="lblPosition1">
+                  <widget class="GtkLabel" id="label74">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
-                    <property name="yalign">0.89999997615814209</property>
                     <property name="xpad">5</property>
-                    <property name="label" translatable="yes">Camera Vector</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">6</property>
-                    <property name="bottom_attach">7</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHSeparator" id="hseparator15">
-                    <property name="height_request">8</property>
-                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Target</property>
                   </widget>
                   <packing>
-                    <property name="top_attach">4</property>
-                    <property name="bottom_attach">5</property>
-                    <property name="y_options">GTK_FILL</property>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
                   </packing>
                 </child>
                 <child>
@@ -4156,40 +4200,31 @@ Box
                     <property name="n_rows">3</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton6">
+                      <widget class="GtkLabel" id="label75">
+                        <property name="width_request">8</property>
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="adjustment">100 -500000 5000000 1 10 10</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Z</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="top_attach">2</property>
                         <property name="bottom_attach">3</property>
+                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton5">
+                      <widget class="GtkLabel" id="label76">
+                        <property name="width_request">7</property>
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="adjustment">1 -500000 500000 1 10 10</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Y</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="adjustment">100 -500000 500000 1 10 10</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
@@ -4205,31 +4240,40 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label76">
-                        <property name="width_request">7</property>
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton4">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Y</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">100 -500000 500000 1 10 10</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">1 -500000 500000 1 10 10</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="top_attach">1</property>
                         <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label75">
-                        <property name="width_request">8</property>
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton6">
                         <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Z</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">100 -500000 5000000 1 10 10</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="top_attach">2</property>
                         <property name="bottom_attach">3</property>
-                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                   </widget>
@@ -4239,27 +4283,50 @@ Box
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label74">
+                  <widget class="GtkHSeparator" id="hseparator15">
+                    <property name="height_request">8</property>
+                    <property name="visible">True</property>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">4</property>
+                    <property name="bottom_attach">5</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="lblPosition1">
                     <property name="visible">True</property>
                     <property name="xalign">0</property>
+                    <property name="yalign">0.89999997615814209</property>
                     <property name="xpad">5</property>
-                    <property name="label" translatable="yes">Target</property>
+                    <property name="label" translatable="yes">Camera Vector</property>
                   </widget>
                   <packing>
-                    <property name="top_attach">3</property>
-                    <property name="bottom_attach">4</property>
+                    <property name="top_attach">6</property>
+                    <property name="bottom_attach">7</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkTable" id="table12">
+                  <widget class="GtkHSeparator" id="hseparator16">
+                    <property name="height_request">8</property>
+                    <property name="visible">True</property>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">7</property>
+                    <property name="bottom_attach">8</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkTable" id="table14">
                     <property name="visible">True</property>
                     <property name="n_rows">3</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton3">
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton9">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">-50000 -50000 50000 1 10 10</property>
+                        <property name="adjustment">100 -360 360 1 10 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
@@ -4269,10 +4336,10 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton2">
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton8">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">100 -500000 500000 1 10 10</property>
+                        <property name="adjustment">1 -360 360 1 10 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
@@ -4282,10 +4349,10 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkSpinButton" id="dlgcameraspinbutton1">
+                      <widget class="GtkSpinButton" id="dlgcameraspinbutton7">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="adjustment">0 -500000 50000 1 10 10</property>
+                        <property name="adjustment">100 -360 360 1 10 10</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
@@ -4293,21 +4360,19 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label73">
-                        <property name="width_request">8</property>
+                      <widget class="GtkLabel" id="label62">
+                        <property name="width_request">50</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">Z</property>
+                        <property name="label" translatable="yes">X</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label72">
+                      <widget class="GtkLabel" id="label78">
                         <property name="width_request">7</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
@@ -4321,43 +4386,25 @@ Box
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label64">
-                        <property name="width_request">50</property>
+                      <widget class="GtkLabel" id="label79">
+                        <property name="width_request">8</property>
                         <property name="visible">True</property>
                         <property name="xalign">0</property>
                         <property name="xpad">5</property>
-                        <property name="label" translatable="yes">X</property>
+                        <property name="label" translatable="yes">Z</property>
                       </widget>
                       <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                   </widget>
                   <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHSeparator" id="hseparator14">
-                    <property name="height_request">8</property>
-                    <property name="visible">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="y_options">GTK_FILL</property>
+                    <property name="top_attach">8</property>
+                    <property name="bottom_attach">9</property>
                   </packing>
                 </child>
-                <child>
-                  <widget class="GtkLabel" id="lblPosition">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="yalign">0.89999997615814209</property>
-                    <property name="xpad">5</property>
-                    <property name="label" translatable="yes">Position</property>
-                  </widget>
-                </child>
               </widget>
               <packing>
                 <property name="x">9</property>