+ for ( i = BOTTOM_LEFT; i <= TOP_RIGHT; i++) {
+ view = aModel->createSubWindow();
+ view->set2dMode( (Mode2dType) i );
+ view->setParent( centralWidget() );
+ view->setViewManager(myManager);
+ updateWindowTitle( view );
+ myViews.append( view );
+ aModel->initView(view);
+ view->setMaximized(false, false);
+ view->setDropDownButtons( dropDownButtons() );
+ connectViewSignals(view);
+ view->setBackground(aModel->background(i));
+ }
+ }
+}
+
+void OCCViewer_ViewFrame::splitSubViews()
+{
+ if( mySplitMode == -1 )
+ return;
+
+ int aNbViews;
+ if ( mySplitMode >= 0 && mySplitMode < 2)
+ aNbViews = 2;
+ else if( mySplitMode >= 2 && mySplitMode < 8 )
+ aNbViews = 3;
+ else if( mySplitMode >=8 && mySplitMode < 29 )
+ aNbViews = 4;
+
+ if( aNbViews != myViewsMode.count() )
+ return;
+
+ int SubViews3Map[6][3][4] = {
+ { {0,0,1,1}, {0,1,1,1}, {0,2,1,1} },
+ { {0,0,1,1}, {1,0,1,1}, {2,0,1,1} },
+ { {0,0,1,1}, {1,0,1,1}, {0,1,2,1} },
+ { {0,0,2,1}, {0,1,1,1}, {1,1,1,1} },
+ { {0,0,1,2}, {1,0,1,1}, {1,1,1,1} },
+ { {0,0,1,1}, {0,1,1,1}, {1,0,1,2} }
+ };
+
+ int SubViews4Map[21][4][4] = {
+ { {0,0,1,1}, {0,1,1,1}, {0,2,1,1}, {0,3,1,1} },
+ { {0,0,1,1}, {1,0,1,1}, {2,0,1,1}, {3,0,1,1} },
+ { {0,0,1,1}, {0,1,1,1}, {1,0,1,1}, {1,1,1,1} },
+ { {0,0,1,1}, {1,0,1,1}, {0,1,2,1}, {0,2,2,1} },
+ { {0,0,2,1}, {0,1,1,1}, {1,1,1,1}, {0,2,2,1} },
+ { {0,0,2,1}, {0,1,2,1}, {0,2,1,1}, {1,2,1,1} },
+ { {0,0,1,1}, {0,1,1,1}, {1,0,1,2}, {2,0,1,2} },
+ { {0,0,1,2}, {1,0,1,1}, {1,1,1,1}, {2,0,1,2} },
+ { {0,0,1,2}, {1,0,1,2}, {2,0,1,1}, {2,1,1,1} },
+ { {0,0,1,1}, {1,0,1,1}, {0,1,2,1}, {2,0,1,2} },
+ { {0,0,2,1}, {0,1,1,1}, {1,1,1,1}, {2,0,1,2} },
+ { {0,0,1,2}, {1,0,1,1}, {2,0,1,1}, {1,1,2,1} },
+ { {0,0,1,2}, {1,0,2,1}, {1,1,1,1}, {2,1,1,1} },
+ { {0,0,2,1}, {0,1,1,1}, {0,2,1,1}, {1,1,1,2} },
+ { {0,0,2,1}, {0,1,1,2}, {1,1,1,1}, {1,2,1,1} },
+ { {0,0,1,1}, {0,1,1,1}, {1,0,1,2}, {0,2,2,1} },
+ { {0,0,1,2}, {1,0,1,1}, {1,1,1,1}, {0,2,2,1} },
+ { {0,0,1,3}, {1,0,1,1}, {1,1,1,1}, {1,2,1,1} },
+ { {0,0,1,1}, {0,1,1,1}, {0,2,1,1}, {1,0,1,3} },
+ { {0,0,1,1}, {1,0,1,1}, {2,0,1,1}, {0,1,3,1} },
+ { {0,0,3,1}, {0,1,1,1}, {1,1,1,1}, {2,1,1,1} },
+ };
+
+ if( aNbViews == 2 ) {
+ if( mySplitMode == 0 ) {
+ myLayout->addWidget( myViews.at(myViewsMode[0]), 0,0,2,1 );
+ myLayout->addWidget( myViews.at(myViewsMode[1]), 0,1,2,1 );
+ }
+ else if( mySplitMode == 1 ) {
+ myLayout->addWidget( myViews.at(myViewsMode[0]), 0,0,1,2 );
+ myLayout->addWidget( myViews.at(myViewsMode[1]), 1,0,1,2 );
+ }
+ }
+ else if( aNbViews == 3 ) {
+ int aSplitMode = mySplitMode - 2;
+ for( int i = 0; i < 3; i++ ) {
+ myLayout->addWidget( myViews.at(myViewsMode[i]),
+ SubViews3Map[aSplitMode][i][0],
+ SubViews3Map[aSplitMode][i][1],
+ SubViews3Map[aSplitMode][i][2],
+ SubViews3Map[aSplitMode][i][3]);
+ }
+ }
+ else if( aNbViews == 4 ) {
+ int aSplitMode = mySplitMode - 8;
+ for( int i = 0; i < 4; i++ ) {
+ myLayout->addWidget( myViews.at(myViewsMode[i]),
+ SubViews4Map[aSplitMode][i][0],
+ SubViews4Map[aSplitMode][i][1],
+ SubViews4Map[aSplitMode][i][2],
+ SubViews4Map[aSplitMode][i][3]);
+ }
+ }
+
+ OCCViewer_ViewWindow* view = 0;
+ bool isVisible3dView = false;
+ for ( int i = 0; i< myViews.count(); i++ ) {
+ view = myViews.at(i);
+ bool isShowed = false;
+ for( int j = 0; j < myViewsMode.count(); j++ ) {
+ OCCViewer_ViewWindow* view2 = 0;
+ view2 = myViews.at( myViewsMode[j] );
+ if( view == view2 )
+ isShowed = true;
+ }
+ if( isShowed ) {