Changeset 1223
- Timestamp:
- Dec 16, 2009, 6:13:38 PM (15 years ago)
- Location:
- trunk/source/interfaces/basic
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/interfaces/basic/include/G4UIQt.hh
r1178 r1223 54 54 class QTextEdit; 55 55 class QLabel; 56 class QDialog;57 56 class QTabWidget; 57 class QResizeEvent; 58 class QToolBox; 58 59 59 60 // Class description : … … 111 112 private: 112 113 void SecondaryLoop(G4String); // a VIRER 113 void TerminalHelp(G4String);114 void CreateHelpWidget(); 114 115 #if QT_VERSION < 0x040000 115 116 QListView * CreateHelpTree(); … … 129 130 130 131 G4bool GetHelpChoice(G4int&) ;// have to be implemeted because we heritate from G4VBasicShell 131 void ExitHelp();// have to be implemeted because we heritate from G4VBasicShell132 132 bool eventFilter(QObject*,QEvent*); 133 133 void ActivateCommand(G4String); … … 146 146 QTextEdit *fTextArea; 147 147 QTextEdit *fHelpArea; 148 QToolBox* fToolBox; 149 148 150 #if QT_VERSION < 0x040000 149 151 QListView *fCommandHistoryArea; … … 153 155 QTreeWidget *fHelpTreeWidget; 154 156 #endif 155 Q Dialog *fHelpDialog;157 QWidget *fHelpTBWidget; 156 158 QLineEdit *helpLine; 157 159 QWidget *visWidget; … … 173 175 void lookForHelpStringCallback(); 174 176 void UpdateTabWidget(int); 177 void ResizeTabWidget( QResizeEvent* ); 175 178 }; 176 179 -
trunk/source/interfaces/basic/src/G4UIQt.cc
r1184 r1223 51 51 #include <qpushbutton.h> 52 52 #include <qlabel.h> 53 #include <qtoolbox.h> 53 54 #include <qsplitter.h> 54 55 #include <qscrollbar.h> … … 58 59 #include <qsignalmapper.h> 59 60 #include <qtabwidget.h> 61 #include <qtabbar.h> 62 #include <qresizeevent> 60 63 61 64 #include <qmainwindow.h> … … 104 107 ,char** argv 105 108 ) 106 :fHelpDialog(NULL) 107 ,fTabWidget(NULL) 109 :fTabWidget(NULL) 108 110 ,fCoutText("Output") 109 111 { … … 163 165 QWidget *mainWidget = new QWidget(fMainWindow); 164 166 #if QT_VERSION < 0x040000 165 QSplitter * visHistorySplitter = new QSplitter(Qt::Vertical,fMainWindow);166 QSplitter *historyCommandLineSplitter = new QSplitter(Qt::Vertical,fMainWindow);167 #else 168 QSplitter * visHistorySplitter = new QSplitter(Qt::Vertical,mainWidget);169 QSplitter *historyCommandLineSplitter = new QSplitter(Qt::Vertical,mainWidget);167 QSplitter *myVSplitter = new QSplitter(Qt::Horizontal,fMainWindow); 168 fToolBox = new QToolBox(Qt::Horizontal,myVSplitter); 169 #else 170 QSplitter *myVSplitter = new QSplitter(Qt::Horizontal,fMainWindow); 171 fToolBox = new QToolBox(mainWidget); 170 172 #endif 171 173 … … 176 178 177 179 fTabWidget = new QTabWidget; 180 178 181 connect(fTabWidget, SIGNAL(currentChanged ( int ) ), SLOT(UpdateTabWidget(int))); 179 180 visWidget = new QWidget(visHistorySplitter); 181 QWidget* coutWidget = new QWidget(fTabWidget); 182 QWidget* historyWidget = new QWidget(historyCommandLineSplitter); 183 QWidget* commandLineWidget = new QWidget(historyCommandLineSplitter); 182 connect(fTabWidget, SIGNAL(resizeEvent ( QResizeEvent* ) ), SLOT(ResizeTabWidget( QResizeEvent*))); 183 184 visWidget = new QWidget(myVSplitter); 185 QWidget* coutTBWidget = new QWidget(fToolBox); 186 fHelpTBWidget = new QWidget(fToolBox); 187 QWidget* visParametersTBWidget = new QWidget(fToolBox); 188 QWidget* viewComponentsTBWidget = new QWidget(fToolBox); 189 QWidget* historyTBWidget = new QWidget(fToolBox); 190 QWidget* commandLineWidget = new QWidget(mainWidget); 184 191 185 192 // QVBoxLayout *layoutVis = new QVBoxLayout(visWidget); 186 QVBoxLayout *layoutCout = new QVBoxLayout(cout Widget);187 QVBoxLayout *layoutHistory = new QVBoxLayout(history Widget);193 QVBoxLayout *layoutCout = new QVBoxLayout(coutTBWidget); 194 QVBoxLayout *layoutHistory = new QVBoxLayout(historyTBWidget); 188 195 QVBoxLayout *layoutCommandLine = new QVBoxLayout(commandLineWidget); 189 196 190 197 // fill them 191 198 192 fTabWidget->addTab(coutWidget,fCoutText); 193 194 fTextArea = new QTextEdit(coutWidget); 195 QPushButton *clearButton = new QPushButton("clear",coutWidget); 199 fTextArea = new QTextEdit(coutTBWidget); 200 QPushButton *clearButton = new QPushButton("clear",coutTBWidget); 196 201 connect(clearButton, SIGNAL(clicked()), SLOT(ClearButtonCallback())); 197 202 198 203 #if QT_VERSION < 0x040000 199 204 200 fCommandHistoryArea = new QListView(history Widget);205 fCommandHistoryArea = new QListView(historyTBWidget); 201 206 fCommandHistoryArea->setSorting (-1, FALSE); 202 207 fCommandHistoryArea->setSelectionMode(QListView::Single); … … 210 215 #endif 211 216 fCommandHistoryArea->installEventFilter(this); 217 212 218 fCommandLabel = new QLabel("",commandLineWidget); 213 219 … … 243 249 // topWidget->setLayout(layoutTop); 244 250 #endif 251 245 252 246 253 layoutHistory->addWidget(fCommandHistoryArea); … … 249 256 #if QT_VERSION >= 0x040000 250 257 251 // bottomWidget->setLayout(layoutBottom);252 258 QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget); 253 259 254 // the splitter for History/CommandLine 255 historyCommandLineSplitter->addWidget(historyWidget); 256 historyCommandLineSplitter->addWidget(commandLineWidget); 257 258 // The splitter for Vis/Cout 259 visHistorySplitter->addWidget(visWidget); 260 visHistorySplitter->addWidget(historyCommandLineSplitter); 261 262 mainLayout->addWidget(visHistorySplitter); 260 CreateHelpWidget(); 261 // the splitter 262 fToolBox->addItem(visParametersTBWidget,"Vis parameters"); 263 fToolBox->addItem(viewComponentsTBWidget,"Viewer components"); 264 fToolBox->addItem(fHelpTBWidget,"Help"); 265 fToolBox->addItem(coutTBWidget,"Cout"); 266 fToolBox->addItem(historyTBWidget,"History"); 267 268 269 fToolBox->setSizePolicy (QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed)); 270 visWidget->setSizePolicy (QSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum)); 271 272 QSizePolicy policy = visWidget->sizePolicy(); 273 policy.setHorizontalStretch(1); 274 policy.setVerticalStretch(1); 275 visWidget->setSizePolicy(policy); 276 277 myVSplitter->addWidget(fToolBox); 278 myVSplitter->addWidget(visWidget); 279 280 commandLineWidget->setSizePolicy (QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum)); 281 mainLayout->addWidget(myVSplitter,1); 282 mainLayout->addWidget(commandLineWidget); 263 283 264 284 #endif … … 270 290 fMainWindow->setCentralWidget(mainWidget); 271 291 #else 272 fMainWindow->setCentralWidget( visHistorySplitter);292 fMainWindow->setCentralWidget(myVSplitter); 273 293 #endif 274 294 … … 280 300 fMainWindow->menuBar()->insertItem( QString("&File"), fileMenu ); 281 301 282 // Add a Help menu283 QPopupMenu *helpMenu = new QPopupMenu( fMainWindow );284 helpMenu->insertItem( "&Show Help", this, SLOT(ShowHelpCallback()), CTRL+Key_H );285 fMainWindow->menuBar()->insertItem( QString("&Help"), helpMenu );286 287 288 302 #else 289 303 … … 292 306 fileMenu->addAction("Quit", this, SLOT(ExitSession())); 293 307 294 // Add a Help menu295 QMenu *helpMenu = fMainWindow->menuBar()->addMenu("Help");296 helpMenu->addAction("Show Help", this, SLOT(ShowHelpCallback()));297 308 #endif 298 309 299 310 AddInteractor ("file",(G4Interactor)fileMenu); 300 AddInteractor ("help",(G4Interactor)helpMenu);301 311 #ifdef G4DEBUG_INTERFACES_BASIC 302 312 printf("G4UIQt::G4UIQt :: 6\n"); … … 357 367 ) 358 368 { 369 #ifdef G4DEBUG_INTERFACES_BASIC 370 printf("G4UIQt::AddTabVisWidget %d %d\n",sizeX, sizeY); 371 #endif 359 372 if (fTabWidget != NULL) { 360 373 if (!aWidget) return; 361 374 375 #ifdef G4DEBUG_INTERFACES_BASIC 376 printf("G4UIQt::AddTabVisWidget ADD %d %d + %d %d---------------------------------------------------\n",sizeX, sizeY,sizeX-visWidget->width(),sizeY-visWidget->height()); 377 #endif 378 362 379 #if QT_VERSION < 0x040000 363 380 aWidget->reparent(visWidget,0,QPoint(0,0)); … … 366 383 #endif 367 384 368 fTabWidget-> addTab(aWidget,name);385 fTabWidget->insertTab(fTabWidget->count()-1,aWidget,name); 369 386 QHBoxLayout *mainLayout = new QHBoxLayout(visWidget); 370 387 mainLayout->setMargin(0); … … 373 390 374 391 // Set the size 392 // fMainWindow->setSizeIncrement(); 393 394 fMainWindow->resize(fMainWindow->width()+sizeX-visWidget->width(), 395 fMainWindow->height()+sizeY-visWidget->height()); 396 } 397 } 398 399 400 void G4UIQt::UpdateTabWidget(int tabNumber) { 375 401 #ifdef G4DEBUG_INTERFACES_BASIC 376 printf("G4UIQt::AddTabWidget size:%d %d\n",sizeX,sizeY); 377 #endif 378 // resize(sizeX,sizeY); 379 } 380 } 381 382 383 void G4UIQt::UpdateTabWidget(int tabNumber) { 402 printf("G4UIQt::UpdateTabWidget\n"); 403 #endif 384 404 QString text = fTabWidget->tabText (tabNumber); 385 405 if ( text != fCoutText) { 386 406 387 407 // Then we have to do /vis/viewer/select on the selelected tab 408 // And resize selected tab 409 fTabWidget->currentWidget()->resize(fTabWidget->currentWidget()->width(),fTabWidget->currentWidget()->height()); 410 388 411 QString paramSelect = QString("/vis/viewer/select ")+text; 389 412 QString paramFlush = QString("/vis/viewer/flush ")+text; … … 398 421 399 422 423 /** Send resize event to all tabs 424 */ 425 void G4UIQt::ResizeTabWidget( QResizeEvent* e) { 426 for (int a=0;a<fTabWidget->count() ;a++) { 427 #ifdef G4DEBUG_INTERFACES_BASIC 428 printf("G4UIQt::ResizeTabWidget +++++++++++++++++++++++++++++++++++++++\n"); 429 #endif 430 fTabWidget->widget(a)->resize(e->size()); 431 } 432 } 433 400 434 401 435 /** Start the Qt main loop … … 416 450 fMainWindow->show(); 417 451 #endif 418 Prompt(" session");452 Prompt("Session :"); 419 453 exitSession = false; 420 454 … … 508 542 if(exitPause==true) break; // TO KEEP 509 543 } // TO KEEP 510 Prompt(" session"); // TO KEEP544 Prompt("Session :"); // TO KEEP 511 545 } 512 546 … … 644 678 645 679 /** 646 Open the help dialog in a separate window.<br> 647 This will be display as a tree widget.<br> 680 Create the fHelpTBWidget 648 681 Implementation of <b>void G4VBasicShell::TerminalHelp(G4String newCommand)</b> 649 650 @param newCommand : open the tree widget item on this command if is set 651 */ 652 void G4UIQt::TerminalHelp( 653 G4String newCommand 654 ) 655 { 656 // Create the help dialog 657 if (!fHelpDialog) { 658 #if QT_VERSION < 0x040000 659 fHelpDialog = new QDialog(0,0,FALSE,Qt::WStyle_Title | Qt::WStyle_SysMenu | Qt::WStyle_MinMax ); 660 #else 661 fHelpDialog = new QDialog(0,Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); 662 #endif 663 QVBoxLayout *vLayout = new QVBoxLayout(fHelpDialog); 664 QWidget *helpWidget = new QWidget(fHelpDialog); 665 QSplitter *splitter = new QSplitter(Qt::Horizontal,fHelpDialog); 666 QPushButton *exitButton = new QPushButton("Exit",fHelpDialog); 667 exitButton->setAutoDefault(false); 668 connect(exitButton, SIGNAL(clicked()), fHelpDialog,SLOT(close())); 669 670 QHBoxLayout *helpLayout = new QHBoxLayout(helpWidget); 671 #if QT_VERSION < 0x040000 672 helpLayout->add(new QLabel("Search :",helpWidget)); 673 #else 674 helpLayout->addWidget(new QLabel("Search :",helpWidget)); 675 #endif 676 helpLine = new QLineEdit(fHelpDialog); 677 #if QT_VERSION < 0x040000 678 helpLayout->add(helpLine); 679 connect( helpLine, SIGNAL( returnPressed () ), this, SLOT( lookForHelpStringCallback() ) ); 680 #else 681 helpLayout->addWidget(helpLine); 682 connect( helpLine, SIGNAL( editingFinished () ), this, SLOT( lookForHelpStringCallback() ) ); 683 #endif 684 685 // the help tree 686 #if QT_VERSION < 0x040000 687 fHelpTreeWidget = new QListView(splitter); 688 #else 689 fHelpTreeWidget = new QTreeWidget(); 690 #endif 691 fHelpTreeWidget = CreateHelpTree(); 692 693 fHelpArea = new QTextEdit(splitter); 694 fHelpArea->setReadOnly(true); 695 696 // Set layouts 697 682 */ 683 void G4UIQt::CreateHelpWidget( 684 ) 685 { 686 687 QVBoxLayout *vLayout = new QVBoxLayout(fHelpTBWidget); 688 QWidget *helpWidget = new QWidget(fHelpTBWidget); 689 QSplitter *splitter = new QSplitter(Qt::Horizontal,fHelpTBWidget); 690 691 QHBoxLayout *helpLayout = new QHBoxLayout(helpWidget); 692 #if QT_VERSION < 0x040000 693 helpLayout->add(new QLabel("Search :",helpWidget)); 694 #else 695 helpLayout->addWidget(new QLabel("Search :",helpWidget)); 696 #endif 697 helpLine = new QLineEdit(fHelpTBWidget); 698 #if QT_VERSION < 0x040000 699 helpLayout->add(helpLine); 700 connect( helpLine, SIGNAL( returnPressed () ), this, SLOT( lookForHelpStringCallback() ) ); 701 #else 702 helpLayout->addWidget(helpLine); 703 connect( helpLine, SIGNAL( editingFinished () ), this, SLOT( lookForHelpStringCallback() ) ); 704 #endif 705 706 // the help tree 707 #if QT_VERSION < 0x040000 708 fHelpTreeWidget = new QListView(splitter); 709 #else 710 fHelpTreeWidget = new QTreeWidget(); 711 #endif 712 fHelpTreeWidget = CreateHelpTree(); 713 714 fHelpArea = new QTextEdit(splitter); 715 fHelpArea->setReadOnly(true); 716 717 // Set layouts 718 698 719 #if QT_VERSION >= 0x040000 699 700 701 702 #endif 703 704 720 if (fHelpTreeWidget) 721 splitter->addWidget(fHelpTreeWidget); 722 splitter->addWidget(fHelpArea); 723 #endif 724 725 705 726 #if QT_VERSION >= 0x040000 706 vLayout->addWidget(helpWidget); 707 vLayout->addWidget(splitter,1); 708 vLayout->addWidget(exitButton); 709 #else 710 vLayout->addWidget(helpWidget); 711 vLayout->addWidget(splitter,1); 712 vLayout->addWidget(exitButton); 713 #endif 714 715 // set the splitter size 727 vLayout->addWidget(helpWidget); 728 vLayout->addWidget(splitter,1); 729 #else 730 vLayout->addWidget(helpWidget); 731 vLayout->addWidget(splitter,1); 732 #endif 733 734 // set the splitter size 716 735 #if QT_VERSION >= 0x040000 717 718 #else 719 720 #endif 721 722 723 724 736 QList<int> list; 737 #else 738 QValueList<int> list; 739 #endif 740 list.append( 400 ); 741 list.append( 400 ); 742 splitter->setSizes(list); 743 725 744 #if QT_VERSION >= 0x040000 726 fHelpDialog->setLayout(vLayout); 727 #endif 728 729 } 730 731 ActivateCommand(newCommand); 732 733 #if QT_VERSION < 0x040000 734 fHelpDialog->setCaption( tr( "Help on commands" )); 735 #else 736 fHelpDialog->setWindowTitle(tr("Help on commands")); 737 #endif 738 fHelpDialog->resize(800,600); 739 fHelpDialog->move(QPoint(400,150)); 740 fHelpDialog->show(); 741 fHelpDialog->raise(); 742 #if QT_VERSION < 0x040000 743 fHelpDialog->setActiveWindow(); 744 #else 745 fHelpDialog->activateWindow(); 746 #endif 745 fHelpTBWidget->setLayout(vLayout); 746 #endif 747 747 748 } 748 749 … … 852 853 } 853 854 } 855 fToolBox->setCurrentWidget(fHelpTBWidget); 854 856 } 855 857 … … 1116 1118 1117 1119 1118 /** Implement G4VBasicShell vurtual function1119 */1120 void G4UIQt::ExitHelp(1121 )1122 {1123 #ifdef G4DEBUG_INTERFACES_BASIC1124 printf("G4UIQt::ExitHelp SHOULD NEVER GO HERE");1125 #endif1126 }1127 1128 1129 1120 /** Event filter method. Every event from QtApplication goes here.<br/> 1130 1121 We apply a filter only for the Up and Down Arrow press when the QLineEdit<br/> … … 1139 1130 ) 1140 1131 { 1132 bool moveCommandCursor = false; 1141 1133 if (aObj == NULL) return false; 1142 1134 if (aEvent == NULL) return false; … … 1215 1207 #endif 1216 1208 } 1209 moveCommandCursor = true; 1217 1210 } else if (e->key() == (Qt::Key_Tab)) { 1218 1211 #if QT_VERSION < 0x040000 … … 1238 1231 } 1239 1232 } 1240 // pass the event on to the parent class 1241 return QObject::eventFilter(aObj, aEvent); 1233 bool res= false; 1234 // change cursor position if needed 1235 if (moveCommandCursor == true) { 1236 #ifdef G4DEBUG_INTERFACES_BASIC 1237 printf("G4UIQt::eventFilter setCursor Position\n"); 1238 #endif 1239 fCommandArea->setCursorPosition ( fCommandArea->text().length() ); 1240 fCommandArea->setCursorPosition (4); 1241 } else { 1242 // pass the event on to the parent class 1243 res = QObject::eventFilter(aObj, aEvent); 1244 } 1245 return res; 1242 1246 } 1243 1247 … … 1313 1317 ApplyShellCommand (command,exitSession,exitPause); 1314 1318 } else { 1315 TerminalHelp(command);1319 ActivateCommand(command); 1316 1320 } 1317 1321 if(exitSession==true) … … 1477 1481 fCommandArea->setText(item->text()); 1478 1482 #endif 1479 1483 #ifdef G4DEBUG_INTERFACES_BASIC 1484 printf("G4UIQt::CommandHistoryCallback change text\n"); 1485 #endif 1480 1486 } 1481 1487
Note: See TracChangeset
for help on using the changeset viewer.