source: trunk/geant4/interfaces/basic/src/G4UIQt.cc@ 514

Last change on this file since 514 was 514, checked in by garnier, 18 years ago

r632@mac-90108: laurentgarnier | 2007-06-15 16:17:56 +0200
bug quand on lance l aide avec -help /vis/- puis -help /gun/-

  • Property svn:mime-type set to text/cpp
File size: 21.9 KB
Line 
1// TODO !
2
3//
4// ********************************************************************
5// * License and Disclaimer *
6// * *
7// * The Geant4 software is copyright of the Copyright Holders of *
8// * the Geant4 Collaboration. It is provided under the terms and *
9// * conditions of the Geant4 Software License, included in the file *
10// * LICENSE and available at http://cern.ch/geant4/license . These *
11// * include a list of copyright holders. *
12// * *
13// * Neither the authors of this software system, nor their employing *
14// * institutes,nor the agencies providing financial support for this *
15// * work make any representation or warranty, express or implied, *
16// * regarding this software system or assume any liability for its *
17// * use. Please see the license in the file LICENSE and URL above *
18// * for the full disclaimer and the limitation of liability. *
19// * *
20// * This code implementation is the result of the scientific and *
21// * technical work of the GEANT4 collaboration. *
22// * By using, copying, modifying or distributing the software (or *
23// * any work based on the software) you agree to acknowledge its *
24// * use in resulting scientific publications, and indicate your *
25// * acceptance of all terms of the Geant4 Software license. *
26// ********************************************************************
27//
28//
29// $Id: G4UIQt.cc,v 1.14 2007/05/29 11:09:49 $
30// GEANT4 tag $Name: geant4-08-01 $
31//
32// L. Garnier
33
34//#define DEBUG
35
36#ifdef G4UI_BUILD_QT_SESSION
37
38#include "G4Types.hh"
39
40#include <string.h>
41
42#include "G4UIQt.hh"
43#include "G4UImanager.hh"
44#include "G4StateManager.hh"
45#include "G4UIcommandTree.hh"
46#include "G4UIcommandStatus.hh"
47
48#include "G4Qt.hh"
49
50#include <QtGui/qapplication.h>
51#include <QtGui/qwidget.h>
52#include <QtGui/qmenu.h>
53#include <QtGui/qmenubar.h>
54#include <QtGui/qboxlayout.h>
55#include <QtGui/qpushbutton.h>
56#include <QtGui/qlabel.h>
57#include <QtGui/qsplitter.h>
58#include <QtGui/qscrollbar.h>
59#include <QtGui/qdialog.h>
60
61#include <stdlib.h>
62
63// Pourquoi Static et non variables de classe ?
64static G4bool exitSession = true;
65static G4bool exitPause = true;
66/***************************************************************************/
67/**
68 Build a Qt window with a menubar, output area and promt area
69 +-----------------------+
70 |exit menu| |
71 | |
72 | +-------------------+ |
73 | | | |
74 | | Output area | |
75 | | | |
76 | +-------------------+ |
77 | | clear | |
78 | +-------------------+ |
79 | | promt history | |
80 | +-------------------+ |
81 | +-------------------+ |
82 | |> promt area | |
83 | +-------------------+ |
84 +-----------------------+
85*/
86
87G4UIQt::G4UIQt (
88 int argc,
89 char** argv
90)
91 :fHelpDialog(NULL)
92
93/***************************************************************************/
94/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
95{
96 G4Qt* interactorManager = G4Qt::getInstance ();
97 G4UImanager* UI = G4UImanager::GetUIpointer();
98 if(UI!=NULL) UI->SetSession(this);
99
100 fMainWindow = new QMainWindow();
101 fMainWindow->setWindowTitle( "G4UI Session" );
102 fMainWindow->resize(800,600);
103 fMainWindow->move(QPoint(300,100));
104
105 QSplitter *splitter = new QSplitter(Qt::Vertical);
106 fTextArea = new QTextEdit();
107 QPushButton *clearButton = new QPushButton("clear");
108 connect(clearButton, SIGNAL(clicked()), SLOT(clearButtonCallback()));
109
110 fCommandHistoryArea = new QTextEdit();
111 fCommandLabel = new QLabel();
112
113 fCommandArea = new QLineEdit();
114 fCommandArea->activateWindow();
115 connect(fCommandArea, SIGNAL(returnPressed()), SLOT(commandEnteredCallback()));
116 fCommandArea->setFocusPolicy ( Qt::StrongFocus );
117 fCommandArea->setFocus(Qt::TabFocusReason);
118 fTextArea->setReadOnly(true);
119 fCommandHistoryArea->setReadOnly(true);
120
121
122
123 // Set layouts
124 QVBoxLayout *layoutSplitter = new QVBoxLayout;
125
126 QWidget* topWidget = new QWidget();
127 QVBoxLayout *layoutTop = new QVBoxLayout;
128
129 QWidget* bottomWidget = new QWidget();
130 QVBoxLayout *layoutBottom = new QVBoxLayout;
131
132
133 layoutTop->addWidget(fTextArea);
134 layoutTop->addWidget(clearButton);
135 topWidget->setLayout(layoutTop);
136
137 layoutBottom->addWidget(fCommandHistoryArea);
138 layoutBottom->addWidget(fCommandLabel);
139 layoutBottom->addWidget(fCommandArea);
140 bottomWidget->setLayout(layoutBottom);
141
142
143 layoutSplitter->addWidget(topWidget);
144 layoutSplitter->addWidget(bottomWidget);
145 splitter->setLayout(layoutSplitter);
146
147 fMainWindow->setCentralWidget(splitter);
148
149 // Add a quit subMenu
150 QMenu *fileMenu = fMainWindow->menuBar()->addMenu("File");
151 fileMenu->addAction("Quitter", fMainWindow, SLOT(close()));
152
153 // Add a Help menu
154 QMenu *helpMenu = fMainWindow->menuBar()->addMenu("Help");
155 helpMenu->addAction("Show Help", this, SLOT(showHelpCallback()));
156
157 // Set the splitter size. The fTextArea sould be 2/3 on the fMainWindow
158 QList<int> vals = splitter->sizes();
159 if(vals.size()==2) {
160 vals[0] = (splitter->orientation()==Qt::Vertical ? splitter->height() : splitter->width())*3/4;
161 vals[1] = (splitter->orientation()==Qt::Vertical ? splitter->height() : splitter->width())*1/4;
162 splitter->setSizes(vals);
163 }
164
165
166 if(UI!=NULL) UI->SetCoutDestination(this); // TO KEEP
167}
168/***************************************************************************/
169G4UIQt::~G4UIQt(
170)
171/***************************************************************************/
172/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
173{
174 G4UImanager* UI = G4UImanager::GetUIpointer(); // TO KEEP
175 if(UI!=NULL) { // TO KEEP
176 UI->SetSession(NULL); // TO KEEP
177 UI->SetCoutDestination(NULL); // TO KEEP
178 }
179
180
181 if (fMainWindow!=NULL)
182 delete fMainWindow;
183}
184/***************************************************************************/
185/*
186 Start the Qt main loop
187 */
188G4UIsession* G4UIQt::SessionStart (
189)
190/***************************************************************************/
191/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
192{
193
194 G4Qt* interactorManager = G4Qt::getInstance ();
195 fMainWindow->show();
196 Prompt("session");
197 exitSession = false;
198
199
200 printf("disable secondary loop\n");
201 interactorManager->DisableSecondaryLoop (); // TO KEEP
202 ((QApplication*)interactorManager->GetMainInteractor())->exec();
203 // on ne passe pas le dessous ? FIXME ????
204 // je ne pense pas 13/06
205
206// void* event; // TO KEEP
207// while((event = interactorManager->GetEvent())!=NULL) { // TO KEEP
208// interactorManager->DispatchEvent(event); // TO KEEP
209// if(exitSession==true) break; // TO KEEP
210// } // TO KEEP
211
212 interactorManager->EnableSecondaryLoop ();
213 printf("enable secondary loop\n");
214 return this;
215}
216/***************************************************************************/
217
218/**
219 Display the prompt in the prompt area
220 */
221void G4UIQt::Prompt (
222 G4String aPrompt
223)
224/***************************************************************************/
225/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
226{
227 fCommandLabel->setText((char*)aPrompt.data());
228}
229/***************************************************************************/
230void G4UIQt::SessionTerminate (
231)
232/***************************************************************************/
233/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
234{
235 G4Qt* interactorManager = G4Qt::getInstance ();
236 fMainWindow->close();
237 ((QApplication*)interactorManager->GetMainInteractor())->exit();
238}
239/***************************************************************************/
240void G4UIQt::PauseSessionStart (
241 G4String a_state
242)
243/***************************************************************************/
244/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
245{
246 printf("G4UIQt::PauseSessionStart\n");
247 if(a_state=="G4_pause> ") { // TO KEEP
248 SecondaryLoop ("Pause, type continue to exit this state"); // TO KEEP
249 } // TO KEEP
250
251 if(a_state=="EndOfEvent") { // TO KEEP
252 // Picking with feed back in event data Done here !!!
253 SecondaryLoop ("End of event, type continue to exit this state"); // TO KEEP
254 } // TO KEEP
255}
256/***************************************************************************/
257void G4UIQt::SecondaryLoop (
258 G4String a_prompt
259)
260/***************************************************************************/
261/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
262{
263 printf("G4UIQt::SecondaryLoop\n");
264 G4Qt* interactorManager = G4Qt::getInstance (); // TO KEEP ?
265 Prompt(a_prompt); // TO KEEP
266 exitPause = false; // TO KEEP
267 void* event; // TO KEEP
268 while((event = interactorManager->GetEvent())!=NULL) { // TO KEEP
269 interactorManager->DispatchEvent(event); // TO KEEP
270 if(exitPause==true) break; // TO KEEP
271 } // TO KEEP
272 Prompt("session"); // TO KEEP
273}
274/***************************************************************************/
275/**
276 Receive a cout from Geant4. We have to display it in the cout zone
277 */
278G4int G4UIQt::ReceiveG4cout (
279 G4String a_string
280)
281/***************************************************************************/
282/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
283{
284 fTextArea->append(QString((char*)a_string.data()).trimmed());
285 fTextArea->verticalScrollBar()->setSliderPosition(fTextArea->verticalScrollBar()->maximum());
286 return 0;
287}
288/***************************************************************************/
289/**
290 Receive a cerr from Geant4. We have to display it in the cout zone
291 */
292G4int G4UIQt::ReceiveG4cerr (
293 G4String a_string
294)
295/***************************************************************************/
296/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
297{
298 QColor previousColor = fTextArea->textColor();
299 fTextArea->setTextColor(Qt::red);
300 fTextArea->append(QString((char*)a_string.data()).trimmed());
301 fTextArea->setTextColor(previousColor);
302 fTextArea->verticalScrollBar()->setSliderPosition(fTextArea->verticalScrollBar()->maximum());
303 return 0;
304}
305
306/***************************************************************************/
307void G4UIQt::AddMenu (
308 const char* a_name
309,const char* a_label
310)
311/***************************************************************************/
312/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
313{
314 printf("G4UIQt::AddMenu %s %s\n",a_name,a_label);
315
316 // QMenu *fileMenu = fMainWindow->menuBar()->addMenu(a_label);
317 QMenu *fileMenu = new QMenu(a_label);
318 fMainWindow->menuBar()->insertMenu(fMainWindow->menuBar()->actions().last(),fileMenu);
319 AddInteractor (a_name,(G4Interactor)fileMenu);
320}
321/***************************************************************************/
322void G4UIQt::AddButton (
323 const char* a_menu
324,const char* a_label
325,const char* a_command
326)
327/***************************************************************************/
328/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
329{
330 if(a_menu==NULL) return; // TO KEEP
331 if(a_label==NULL) return; // TO KEEP
332 if(a_command==NULL) return; // TO KEEP
333 QMenu *parent = (QMenu*)GetInteractor(a_menu);
334 if(parent==NULL) return;
335
336 signalMapper = new QSignalMapper(this);
337 QAction *action = parent->addAction(a_label, signalMapper, SLOT(map()));
338 signalMapper->setMapping(action, QString(a_command));
339 connect(signalMapper, SIGNAL(mapped(const QString &)),this, SLOT(buttonCallback(const QString&)));
340}
341
342
343
344
345/**
346 Open the help dialog in a separate window.
347 This will be display as a tree widget
348 Implementation of <b>void G4VBasicShell::TerminalHelp(G4String newCommand)</b>
349
350 @param newCommand : open the tree widget item on this command if is set
351 */
352void G4UIQt::TerminalHelp(G4String newCommand)
353{
354 if (!fHelpDialog) {
355 fHelpDialog = new QDialog;
356
357 QSplitter *splitter = new QSplitter(Qt::Horizontal);
358 fHelpArea = new QTextEdit();
359 QPushButton *exitButton = new QPushButton("Exit");
360 connect(exitButton, SIGNAL(clicked()), fHelpDialog,SLOT(close()));
361 fHelpArea->setReadOnly(true);
362
363 // the help tree
364 G4UImanager* UI = G4UImanager::GetUIpointer();
365 if(UI==NULL) return;
366 G4UIcommandTree * treeTop = UI->GetTree();
367
368
369 // build widget
370 fHelpTreeWidget = new QTreeWidget();
371 fHelpTreeWidget->setColumnCount(2);
372 fHelpTreeWidget->setColumnHidden(1,true);
373 QStringList labels;
374 labels << QString("Command") << QString("Description");
375 fHelpTreeWidget->setHeaderLabels(labels);
376
377 QList<QTreeWidgetItem *> items;
378 G4int treeSize = treeTop->GetTreeEntry();
379 QTreeWidgetItem * newItem;
380 for (int a=0;a<treeSize;a++) {
381 // Creating new item
382 QStringList stringList;
383 stringList << QString((char*)(treeTop->GetTree(a+1)->GetPathName()).data()).trimmed() ;
384 stringList << QString((char*)(treeTop->GetTree(a+1)->GetTitle()).data()).trimmed() ;
385
386 newItem = new QTreeWidgetItem(stringList);
387
388 // look for childs
389 CreateChildTree(newItem,treeTop->GetTree(a+1));
390 items.append(newItem);
391 }
392 fHelpTreeWidget->insertTopLevelItems(0, items);
393
394 //connecting callback
395 // QSignalMapper signalMapper = new QSignalMapper(this);
396
397 connect(fHelpTreeWidget, SIGNAL(itemSelectionChanged ()),this, SLOT(helpTreeCallback()));
398
399 // Set layouts
400 QHBoxLayout *splitterLayout = new QHBoxLayout;
401
402 QVBoxLayout *vLayout = new QVBoxLayout;
403
404 splitterLayout->addWidget(fHelpTreeWidget);
405 splitterLayout->addWidget(fHelpArea);
406 splitter->setLayout(splitterLayout);
407
408 vLayout->addWidget(splitter);
409 vLayout->addWidget(exitButton);
410 fHelpDialog->setLayout(vLayout);
411
412 }
413
414 // Look for the choosen command "newCommand"
415 size_t i = newCommand.index(" ");
416 G4String targetCom="";
417 if( i != std::string::npos )
418 {
419 G4String newValue = newCommand(i+1,newCommand.length()-(i+1));
420 newValue.strip(G4String::both);
421 targetCom = ModifyToFullPathCommand( newValue );
422 printf("test : av:%s-- ap:%s--\n",((char*)newValue.data()),((char*)targetCom.data()));
423 }
424 if (targetCom != "") {
425 QList<QTreeWidgetItem *> list = fHelpTreeWidget->findItems(QString(((char*)targetCom.data())),Qt::MatchFixedString,0);
426 for (int a=0;a<13;a++) {
427 printf("verif.... =%s= +%s+\n",fHelpTreeWidget->topLevelItem(a)->text(0).toStdString().c_str(),((char*)targetCom.data()));
428 }
429
430 if (!list.isEmpty()) {
431 printf("found...........\n");
432 if (list.first()->childCount() >0)
433 list.first()->setExpanded(true);
434
435 QList<QTreeWidgetItem *> selected = fHelpTreeWidget->selectedItems();
436 if (!selected.isEmpty()) {
437 for (int a=0;a<selected.count();a++) {
438 printf("unselect %d\n",selected.count());
439 // selected.at(a)->setSelected(false);
440 selected.first()->setSelected(false);
441 }
442 printf("AAA\n");
443 }
444 printf("BB\n");
445 list.first()->setSelected(true);
446 printf("CC\n");
447
448 // Call the update of the right textArea
449 helpTreeCallback();
450 printf("DD\n");
451 }
452 }
453 fHelpDialog->resize(800,600);
454 fHelpDialog->move(QPoint(400,150));
455 fHelpDialog->show();
456 fHelpDialog->raise();
457 fHelpDialog->activateWindow();
458}
459
460
461
462void G4UIQt::CreateChildTree(QTreeWidgetItem *a_parent,G4UIcommandTree *a_commandTree) {
463
464 // Creating new item
465 QTreeWidgetItem * newItem;
466
467
468 // Get the Sub directories
469 for (int a=0;a<a_commandTree->GetTreeEntry();a++) {
470
471 QStringList stringList;
472 stringList << QString((char*)(a_commandTree->GetTree(a+1)->GetPathName()).data()).trimmed() ;
473 stringList << QString((char*)(a_commandTree->GetTree(a+1)->GetTitle()).data()).trimmed() ;
474 newItem = new QTreeWidgetItem(stringList);
475
476 CreateChildTree(newItem,a_commandTree->GetTree(a+1));
477 a_parent->addChild(newItem);
478 }
479
480
481
482 // Get the Commands
483
484 for (int a=0;a<a_commandTree->GetCommandEntry();a++) {
485
486 QStringList stringList;
487 stringList << QString((char*)(a_commandTree->GetCommand(a+1)->GetCommandPath()).data()).trimmed() ;
488 stringList << QString((char*)(a_commandTree->GetCommand(a+1)->GetCommandPath()).data()).trimmed() ;
489 newItem = new QTreeWidgetItem(stringList);
490
491 a_parent->addChild(newItem);
492 newItem->setExpanded(false);
493 }
494}
495
496
497/**
498 This fonction return the command list parameters in a QString
499
500 */
501/***************************************************************************/
502QString G4UIQt::GetCommandList (
503 G4UIcommand *a_command
504)
505/***************************************************************************/
506/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
507{
508
509 QString txt;
510 G4String commandPath = a_command->GetCommandPath();
511 G4String rangeString = a_command->GetRange();
512
513 if((commandPath.length()-1)!='/')
514 {
515 txt += "Command " + QString((char*)(commandPath).data()) + "\n";
516 }
517 txt += "Guidance :\n";
518 G4int n_guidanceEntry = a_command->GetGuidanceEntries();
519
520 for( G4int i_thGuidance=0; i_thGuidance < n_guidanceEntry; i_thGuidance++ )
521 { txt += QString((char*)(a_command->GetGuidanceLine(i_thGuidance)).data()) + "\n"; }
522 if( ! rangeString.isNull() )
523 { txt += " Range of parameters : " + QString((char*)(rangeString).data()) + "\n"; }
524 G4int n_parameterEntry = a_command->GetParameterEntries();
525 if( n_parameterEntry > 0 )
526 {
527 G4UIparameter *param;
528
529 // Re-implementation of G4UIparameter.cc
530
531 for( G4int i_thParameter=0; i_thParameter<n_parameterEntry; i_thParameter++ )
532 { param = a_command->GetParameter(i_thParameter);
533 txt += "\nParameter : " + QString((char*)(param->GetParameterName()).data()) + "\n";
534 if( ! param->GetParameterGuidance().isNull() )
535 txt += QString((char*)(param->GetParameterGuidance()).data())+ "\n" ;
536 txt += " Parameter type : " + QString(param->GetParameterType())+ "\n";
537 if(param->IsOmittable())
538 { txt += " Omittable : True\n"; }
539 else
540 { txt += " Omittable : False\n"; }
541 if( param->GetCurrentAsDefault() )
542 { txt += " Default value : taken from the current value\n"; }
543 else if( ! param->GetDefaultValue().isNull() )
544 { txt += " Default value : " + QString((char*)(param->GetDefaultValue()).data())+ "\n"; }
545 if( ! param->GetParameterRange().isNull() )
546 txt += " Parameter range : " + QString((char*)(param->GetParameterRange()).data())+ "\n";
547 if( ! param->GetParameterCandidates().isNull() )
548 txt += " Candidates : " + QString((char*)(param->GetParameterCandidates()).data())+ "\n";
549 }
550 }
551 return txt;
552}
553
554
555
556/***************************************************************************/
557void G4UIQt::expandHelpItem (
558 QTreeWidgetItem *a_parent
559,G4UIcommand* a_expandCommand
560)
561/***************************************************************************/
562/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
563{
564}
565
566
567
568/***************************************************************************/
569//
570// SLOTS DEFINITIONS
571//
572/***************************************************************************/
573
574/***************************************************************************/
575void G4UIQt::showHelpCallback (
576)
577/***************************************************************************/
578/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
579{
580 TerminalHelp("");
581}
582
583/***************************************************************************/
584void G4UIQt::clearButtonCallback (
585)
586/***************************************************************************/
587/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
588{
589 fTextArea->clear();
590}
591
592
593/**
594 Callback call when "click on a menu entry.
595 Send the associated command to geant4
596 */
597void G4UIQt::commandEnteredCallback (
598)
599/***************************************************************************/
600/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
601{
602 printf ("debug : callback\n");
603 G4String command (fCommandArea->text().toStdString().c_str());
604 if (fCommandArea->text().toStdString().c_str() != "") {
605 fCommandHistoryArea->append(fCommandArea->text());
606
607 if (command(0,4) != "help") {
608 ApplyShellCommand (command,exitSession,exitPause);
609 } else {
610 printf ("terminal help\n");
611 TerminalHelp(command);
612 }
613 if(exitSession==true)
614 SessionTerminate();
615 }
616 fCommandArea->setText("");
617}
618
619/**
620 Callback call when "enter" clicked on the command zone.
621 Send the command to geant4
622 */
623void G4UIQt::buttonCallback (
624 const QString& a_command
625)
626/***************************************************************************/
627/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
628{
629 G4String ss = G4String(a_command.toStdString().c_str());
630 printf ("debug : execute:\n-%s- %d %d \n",ss.data(),exitSession,exitPause);
631 ApplyShellCommand(ss,exitSession,exitPause);
632 if(exitSession==true)
633 SessionTerminate();
634}
635/**
636This callback is activated when user selected a item in the help tree
637 */
638void G4UIQt::helpTreeCallback (
639)
640/***************************************************************************/
641/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
642{
643 // G4bool GetHelpChoice(G4int&);
644 QTreeWidgetItem* item = NULL;
645 if (!fHelpTreeWidget)
646 return ;
647
648 if (!fHelpArea)
649 return;
650
651 item = fHelpTreeWidget->selectedItems().first();
652 if (!item)
653 return;
654
655 G4UImanager* UI = G4UImanager::GetUIpointer();
656 if(UI==NULL) return;
657 G4UIcommandTree * treeTop = UI->GetTree();
658 G4UIcommand* command = treeTop->FindPath(item->text (1).toStdString().c_str());
659 if (command) {
660 fHelpArea->setText(GetCommandList(command));
661 } else {
662 // this is not a command, this is a sub directory
663 // We display the Title
664 fHelpArea->setText(item->text (1).toStdString().c_str());
665 }
666}
667
668
669#endif
Note: See TracBrowser for help on using the repository browser.