1 /****************************************************************************
2 ** ui.h extension file, included from the uic-generated form implementation.
4 ** If you wish to add, delete or rename functions or slots use
5 ** Qt Designer which will update this file, preserving your code. Create an
6 ** init() function in place of a constructor, and a destroy() function in
7 ** place of a destructor.
8 *****************************************************************************/
11 void MainWindow::init()
14 _canvas
= new qan::can::Canvas( 300, 150 );
15 _canvas
->setBackgroundColor( QColor( 255, 255, 255 ) );
19 _canvasView
= new qan::can::CanvasView( *_canvas
, _frame
, "niCanvasView" );
20 QVBoxLayout
*vbox
= new QVBoxLayout( _frame
);
21 vbox
->addWidget( _canvasView
);
22 connect( _sldZoom
, SIGNAL( valueChanged(int) ), _canvasView
, SLOT( setZoom(int) ) );
26 _graph
= new qan::la::Graph( );
29 // Create a graphical view for the graph on the canvas
30 _graphView
= new qan::can::GraphViewImpl( *_canvas
, *_graph
);
32 qan::can::AdvStyle
* blueNode
= new qan::can::AdvStyle( "bluenode" );
33 blueNode
->addImage( "backimage", "images/gradblue.png" );
34 blueNode
->addColor( "bordercolor", 0, 0, 0 );
36 qan::can::AdvStyle
* greenNode
= new qan::can::AdvStyle( "greennode" );
37 greenNode
->addImage( "backimage", "images/gradgreen.png" );
38 greenNode
->addColor( "bordercolor", 50, 100, 200 );
40 qan::can::AdvStyle
* orangeNode
= new qan::can::AdvStyle( "centernode" );
41 orangeNode
->addImage( "backimage", "images/gradorange.png" );
42 orangeNode
->addColor( "bordercolor", 50, 100, 200 );
43 orangeNode
->addValue( "fontsize", 12 );
47 qan::la::Node
* center
= new qan::la::Node( "<b>Center</b>" );
48 _graph
->registerNode( *center
);
49 _graph
->addRoot( *center
);
50 _graphView
->getStyleManager( ).setStyle( center
, *orangeNode
);
52 qan::la::Node
* n
= new qan::la::Node( "Node 1" );
53 _graph
->registerNode( *n
);
54 _graph
->createEdge( *center
, *n
);
55 _graphView
->getStyleManager( ).setStyle( n
, *blueNode
);
57 qan::la::Node
* m
= new qan::la::Node( "Node 11" );
58 _graph
->registerNode( *m
);
59 _graph
->createEdge( *n
, *m
);
60 _graphView
->getStyleManager( ).setStyle( m
, *blueNode
);
62 n
= new qan::la::Node( "Node 2" );
63 _graph
->registerNode( *n
);
64 _graph
->createEdge( *center
, *n
);
65 _graphView
->getStyleManager( ).setStyle( n
, *blueNode
);
67 m
= new qan::la::Node( "Node 21" );
68 _graph
->registerNode( *m
);
69 _graph
->createEdge( *n
, *m
);
70 _graphView
->getStyleManager( ).setStyle( m
, *blueNode
);
72 n
= new qan::la::Node( "Node 3" );
73 _graph
->registerNode( *n
);
74 _graph
->createEdge( *center
, *n
);
75 _graphView
->getStyleManager( ).setStyle( n
, *greenNode
);
77 m
= new qan::la::Node( "Node 31" );
78 _graph
->registerNode( *m
);
79 _graph
->createEdge( *n
, *m
);
80 _graphView
->getStyleManager( ).setStyle( m
, *greenNode
);
82 n
= new qan::la::Node( "Node 4" );
83 _graph
->registerNode( *n
);
84 _graph
->createEdge( *center
, *n
);
85 _graphView
->getStyleManager( ).setStyle( n
, *greenNode
);
87 m
= new qan::la::Node( "Node 41" );
88 _graph
->registerNode( *m
);
89 _graph
->createEdge( *n
, *m
);
90 _graphView
->getStyleManager( ).setStyle( m
, *greenNode
);
92 m
= new qan::la::Node( "Node 42" );
93 _graph
->registerNode( *m
);
94 _graph
->createEdge( *n
, *m
);
95 _graphView
->getStyleManager( ).setStyle( m
, *greenNode
);
97 _graphView
->update( );
99 _layout
= new qan::la::Random( );
100 qan::utl::ProgressVoid progress
;
101 _layout
->layout( *_graph
, _canvas
->getGrid( ), _canvas
->width( ), _canvas
->height( ), progress
);
102 _graphView
->updatePositions( );
110 void MainWindow::layout()
115 switch ( _cbLayoutType
->currentItem( ) )
122 qan::la::Vectorf
origin( 2 ); origin( 0 ) = 10.f
; origin( 1 ) = 10.f
;
123 qan::la::Vectorf
spacing( 2 ); spacing( 0 ) = 120.f
; spacing( 1 ) = 55.f
;
124 _layout
= new qan::la::DirectedTree( origin
, spacing
, qan::la::DirectedTree::HORIZONTAL
);
128 _layout
= new qan::la::UndirectedGraph( );
131 _layout
= new qan::la::Random( );
138 // Apply the settings if all needed parameters have been specified
139 if ( _layout
!= 0 && _canvas
!= 0 && _graph
!= 0 && _graphView
!= 0 )
141 // Update the graph layout
143 qan::qui::ProgressQt
progressQt( this );
144 _layout
->layout( *_graph
, _canvas
->getGrid( ), _canvas
->width( ), _canvas
->height( ), progressQt
);
145 //progress->finish( );
148 // Update the item position on the canvas to fit the new layout node's position, and show the nodes
149 _graphView
->update( );
150 _canvasView
->show( );