Index: graph_displayer_canvas-node.cc
===================================================================
--- graph_displayer_canvas-node.cc	(revision 96)
+++ graph_displayer_canvas-node.cc	(revision 154)
@@ -17,11 +17,18 @@
 	  double v=fabs((*actual_map)[i]);
 	  int w;
-	  if(min==max)
-	    {
-	      w=(int)(node_property_defaults[N_RADIUS]);
-	    }
-	  else
-	    {
-	      w=(int)(MIN_NODE_RADIUS+(v-min)/(max-min)*(MAX_NODE_RADIUS-MIN_NODE_RADIUS));
+	  if(autoscale)
+	    {
+	      if(min==max)
+		{
+		  w=(int)(node_property_defaults[N_RADIUS]);
+		}
+	      else
+		{
+		  w=(int)(radius_min+(v-min)/(max-min)*(radius_max-radius_min));
+		}
+	    }
+	  else
+	    {
+	      w=5+(int)(v/radius_unit);
 	    }
 	  if(w>=0)
@@ -42,5 +49,6 @@
     {
       //I think only new nodes use this case
-//       int w=(int)(*actual_map)[node];
+      //that has no own value, only the default one
+      //int w=(int)(*actual_map)[node];
       int w=(int)(node_property_defaults[N_RADIUS]);
       if(w>=0)
Index: graph_displayer_canvas.cc
===================================================================
--- graph_displayer_canvas.cc	(revision 151)
+++ graph_displayer_canvas.cc	(revision 154)
@@ -6,5 +6,5 @@
   nodetextmap(mainw.mapstorage.graph), displayed_graph(*(root()), 0, 0),
   isbutton(0), active_item(NULL), target_item(NULL), nodemap_to_edit(""),
-  edgemap_to_edit(""), mytab(mainw)
+  edgemap_to_edit(""), autoscale(true), radius_min(10), radius_max(40), radius_unit(1), mytab(mainw)
 {
   //base event handler is move tool
@@ -227,2 +227,19 @@
   }
 }
+
+void GraphDisplayerCanvas::setNodeView(bool autoscale_p, double min_p, double max_p, double unit_p)
+{
+  autoscale=autoscale_p;
+  radius_min=min_p;
+  radius_max=max_p;
+  radius_unit=unit_p;
+  propertyChange(false, N_RADIUS);
+}
+
+void GraphDisplayerCanvas::getNodeView(bool & autoscale_p, double& min_p, double& max_p, double& unit_p)
+{
+  autoscale_p=autoscale;
+  min_p=radius_min;
+  max_p=radius_max;
+  unit_p=radius_unit;
+}
Index: graph_displayer_canvas.h
===================================================================
--- graph_displayer_canvas.h	(revision 151)
+++ graph_displayer_canvas.h	(revision 154)
@@ -287,4 +287,10 @@
   int getActualTool();
 
+  ///Sets node representation settings
+  void setNodeView(bool, double, double, double);
+
+  ///Gets node representation settings
+  void getNodeView(bool &, double&, double&, double&);
+
   ///draws the graph
 
@@ -378,4 +384,16 @@
   static const int zoom_step = 5;
 
+  ///Is node radius autoscaled
+  bool autoscale;
+  
+  ///Minimum node radius
+  double radius_min;
+
+  ///Maximum node radius
+  double radius_max;
+
+  ///Node radius unit
+  double radius_unit;
+
 private:
 
Index: main_win.cc
===================================================================
--- main_win.cc	(revision 149)
+++ main_win.cc	(revision 154)
@@ -12,5 +12,6 @@
   set_title ("no file");
   set_default_size(WIN_WIDTH,WIN_HEIGHT);
-  add(vbox);
+  //add(vbox);
+  add(table);
 
   // custom icons for the toolbar
@@ -186,5 +187,6 @@
   Gtk::Widget* menubar = uim->get_widget("/MenuBar");
   if (menubar){
-    vbox.pack_start(*menubar, Gtk::PACK_SHRINK);
+    //vbox.pack_start(*menubar, Gtk::PACK_SHRINK);
+    table.attach(*menubar, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
   }
 
@@ -193,6 +195,48 @@
   {
     static_cast<Gtk::Toolbar*>(toolbar)->set_toolbar_style(Gtk::TOOLBAR_ICONS);
-    vbox.pack_start(*toolbar, Gtk::PACK_SHRINK);
+    //hbox.pack_start(*toolbar, Gtk::PACK_EXPAND_WIDGET);
+
+    table.attach(*toolbar, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+
   }
+
+  auto_scale= new Gtk::CheckButton("Autoscale");
+  auto_scale->set_active(false);
+  auto_scale->signal_toggled().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
+
+  table2.set_row_spacings(10);
+  table2.set_col_spacings(5);
+
+  table2.attach(*auto_scale, 0,2,0,1);
+ 
+  Gtk::Label * unit_label= new Gtk::Label("Unit:");
+  table2.attach(*unit_label, 2,3,0,1);
+  
+  Gtk::Adjustment * adjustment_unit=new Gtk::Adjustment(20, 5, 200, 5, 10);
+
+  radius_unit = new Gtk::SpinButton(*adjustment_unit, 5,0);
+  radius_unit->signal_value_changed().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
+  table2.attach(*radius_unit, 3,4,0,1);
+
+  Gtk::Label * min_label= new Gtk::Label("Min:");
+  table2.attach(*min_label, 0,1,1,2);
+  
+  Gtk::Adjustment * adjustment_min=new Gtk::Adjustment(20, 5, 200, 5, 10);
+
+  radius_min = new Gtk::SpinButton(*adjustment_min, 5,0);
+  radius_min->signal_value_changed().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
+  table2.attach(*radius_min, 1,2,1,2);
+
+  Gtk::Label * max_label= new Gtk::Label("Max:");
+  table2.attach(*max_label, 2,3,1,2);
+  
+  Gtk::Adjustment * adjustment_max=new Gtk::Adjustment(20, 5, 200, 5, 10);
+
+  radius_max = new Gtk::SpinButton(*adjustment_max, 5,0);
+  radius_max->signal_value_changed().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
+  table2.attach(*radius_max, 3,4,1,2);
+
+  //vbox.pack_start(hbox, Gtk::PACK_SHRINK);
+  table.attach(table2, 1, 2, 0, 2, Gtk::SHRINK, Gtk::SHRINK);
 
   tooltips.set_tip(*(uim->get_widget("/ToolBar/CreateNode")),"Create Node");
@@ -204,5 +248,6 @@
   active_tool = MOVE;
 
-  vbox.pack_start(notebook);
+  //vbox.pack_start(notebook);
+  table.attach(notebook,0,2,2,3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL);
   
   show_all_children();
@@ -317,4 +362,14 @@
   tabs[active_tab]->gd_canvas->changeEditorialTool(active_tool);
   set_title(tabnames[active_tab]);
+  bool autoscale;
+  double min;
+  double max;
+  double unit;
+  tabs[active_tab]->getNodeView(autoscale, min, max, unit);
+  radius_min->set_value(min);
+  radius_max->set_value(max);
+  radius_unit->set_value(unit);
+  auto_scale->set_active(autoscale);
+
 }
 
@@ -478,2 +533,12 @@
   nmw->run();
 }
+
+
+void MainWin::nodeViewChanged()
+{
+  double min=radius_min->get_value();
+  double max=radius_max->get_value();
+  double unit=radius_unit->get_value();
+  bool autoscale=auto_scale->get_active();
+  tabs[active_tab]->setNodeView(autoscale, min, max, unit);
+}
Index: main_win.h
===================================================================
--- main_win.h	(revision 119)
+++ main_win.h	(revision 154)
@@ -21,5 +21,16 @@
 {
   ///Container in which the menus and the notebook is.
-  Gtk::VBox vbox;
+  //Gtk::VBox vbox;
+  Gtk::Table table;
+  Gtk::Table table2;
+
+  ///Container in which the toolbar and the node parametrizer is.
+  Gtk::HBox hbox;
+
+  ///Should nodes be autoscaled or not?
+  Gtk::CheckButton * auto_scale;
+
+  ///Minimum and maximum node radius entry
+  Gtk::SpinButton * radius_min, * radius_max, * radius_unit;
 
   ///The notebook that has tabs (\ref NoteBookTab) with different graphs.
@@ -222,4 +233,6 @@
   ///updates the title of window to the actually selected \ref NoteBookTab.
   virtual void onChangeTab(GtkNotebookPage*, guint);
+
+  virtual void nodeViewChanged();
 };
 
Index: nbtab.cc
===================================================================
--- nbtab.cc	(revision 136)
+++ nbtab.cc	(revision 154)
@@ -219,2 +219,11 @@
 }
 
+void NoteBookTab::setNodeView(bool autoscale, double min, double max, double unit)
+{
+  gd_canvas->setNodeView(autoscale, min, max, unit);
+}
+
+void NoteBookTab::getNodeView(bool & autoscale, double& min, double& max, double& unit)
+{
+  gd_canvas->getNodeView(autoscale, min, max, unit);
+}
Index: nbtab.h
===================================================================
--- nbtab.h	(revision 121)
+++ nbtab.h	(revision 154)
@@ -157,4 +157,10 @@
   ///\ref mapwin.
   void closeMapWin();
+
+  ///Sets node representation settings
+  void setNodeView(bool, double, double, double);
+
+  ///Gets node representation settings
+  void getNodeView(bool &, double&, double&, double&);
 };
 
