source: trunk/geant4/visualization/OpenGL/src/G4OpenGLQtExportDialog.cc @ 594

Last change on this file since 594 was 593, checked in by garnier, 17 years ago

r627@mac-90108: laurentgarnier | 2007-11-09 07:57:42 +0100
modif dans les includes directives

  • Property svn:mime-type set to text/cpp
File size: 9.0 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26//
27// $Id: G4OpenGLQtExportDialog.cc,v 1.2 2007/11/08 17:00:51 lgarnier Exp $
28// GEANT4 tag $Name:  $
29//
30//
31
32#ifdef G4VIS_BUILD_OPENGLQT_DRIVER
33
34#include "G4OpenGLQtExportDialog.hh"
35
36#include <QtCore/QVariant.h>
37#include <QtGui/QPushButton.h>
38#include <QtGui/QCheckBox.h>
39#include <QtGui/QLabel.h>
40#include <QtGui/QComboBox.h>
41#include <QtGui/QSlider.h>
42#include <QtGui/QLayout.h>
43#include <QtGui/QGroupBox.h>
44#include <QtGui/QRadioButton.h>
45#include <QtGui/QImage.h>
46#include <QtGui/QLineEdit.h>
47
48G4OpenGLQtExportDialog::G4OpenGLQtExportDialog(
49 QWidget* parent
50,QString nomFich
51 ,int aHeight
52 ,int aWidth
53)
54  : QDialog( parent )
55{
56  setWindowTitle( tr( " Export options" ));
57  originalWidth = aWidth;
58  originalHeight = aHeight;
59
60  // Initializations
61  qualitySlider = NULL;
62  width = NULL;
63  height = NULL;
64  colorButton = NULL;
65  BWButton = NULL;
66
67  // global layout
68  QVBoxLayout* globalVLayout = new QVBoxLayout();
69
70 
71  if (nomFich.endsWith(".jpg") ||
72      nomFich.endsWith(".jepg")) {
73   
74    QGroupBox *imageGroupBox = new QGroupBox(tr("Image quality"));
75    QVBoxLayout *imageGroupBoxLayout = new QVBoxLayout;
76
77    QWidget *sliderBox = new QWidget;
78    QHBoxLayout *hSlider = new QHBoxLayout;
79    //    qualityLabel =  new QLabel( tr( "Image quality" ) );
80    //    imageGroupBoxLayout->addWidget(qualityLabel);
81    qualitySlider= new QSlider(Qt::Horizontal);
82    qualitySlider->setMinimum(0);
83    qualitySlider->setMaximum(100);
84    qualitySlider->setTickPosition(QSlider::TicksBelow);
85    qualitySlider->setValue(60);
86    hSlider->addWidget(new QLabel("low"));
87    hSlider->addWidget(qualitySlider);
88    hSlider->addWidget(new QLabel("Maximum"));
89    sliderBox->setLayout(hSlider);
90    imageGroupBoxLayout->addWidget(sliderBox);
91
92    imageGroupBox->setLayout(imageGroupBoxLayout);
93    globalVLayout->addWidget(imageGroupBox);
94  }
95 
96  if(nomFich.endsWith(".eps")) {
97    QGroupBox *EPSGroupBox = new QGroupBox(tr("EPS options"));
98    QVBoxLayout *EPSGroupBoxLayout = new QVBoxLayout;
99
100    //    transparencyEPS = new QCheckBox( "transparencyEPS" );
101    //    transparencyEPS->setText( "save background" );
102    //    transparencyEPS->setChecked( true );
103
104    colorButton = new QRadioButton("Color");
105    BWButton = new QRadioButton("Grayscale");
106    colorButton->setChecked( true );
107    BWButton->setChecked( false );
108
109
110    //    EPSGroupBoxLayout->addWidget(transparencyEPS);   
111    EPSGroupBoxLayout->addWidget(colorButton);   
112    EPSGroupBoxLayout->addWidget(BWButton);   
113    EPSGroupBox->setLayout(EPSGroupBoxLayout);
114    globalVLayout->addWidget(EPSGroupBox);
115
116  }
117
118  if(nomFich.endsWith(".tif") ||
119     nomFich.endsWith(".tiff") ||
120     nomFich.endsWith(".jpg") ||
121     nomFich.endsWith(".png") ||
122     nomFich.endsWith(".xpm")) {
123
124    QGroupBox *transparencyGroupBox = new QGroupBox(tr("Transparency"));
125    QVBoxLayout *transparencyGroupBoxLayout = new QVBoxLayout;
126
127    boxTransparency = new QCheckBox("Save transparency");
128    boxTransparency->setChecked( false );
129    //    boxTransparency->setEnabled(false);
130
131    transparencyGroupBoxLayout->addWidget(boxTransparency);   
132    transparencyGroupBox->setLayout(transparencyGroupBoxLayout);
133    globalVLayout->addWidget(transparencyGroupBox);
134
135  }
136
137  // size box
138  QGroupBox *sizeGroupBox = new QGroupBox(tr("Size"));
139  QVBoxLayout *sizeGroupBoxLayout = new QVBoxLayout;
140 
141  QHBoxLayout *modifyAndRatioLayout = new QHBoxLayout;
142  QWidget* modifyAndRatioWidget = new QWidget;
143
144  // original button
145  original = new QRadioButton("Original");
146  original->setChecked( true );
147  sizeGroupBoxLayout->addWidget(original);
148
149  // modify and ratio
150  modify = new QRadioButton("Modify");
151  modify->setChecked( false );
152
153  ratioCheckBox = new QCheckBox( "Keep ratio" );
154  ratioCheckBox->setChecked( true );
155
156  modifyAndRatioLayout->addWidget(modify);
157  modifyAndRatioLayout->addWidget(ratioCheckBox);
158  modifyAndRatioWidget->setLayout(modifyAndRatioLayout);
159  sizeGroupBoxLayout->addWidget(modifyAndRatioWidget);
160  ratioCheckBox->setVisible(modify->isChecked());
161
162  connect( original, SIGNAL( clicked(bool) ), this, SLOT( changeSizeBox(true)) );
163  connect( modify, SIGNAL( clicked(bool) ), this, SLOT( changeSizeBox(false) ) );
164
165  // height
166  QHBoxLayout *heightLineLayout = new QHBoxLayout;
167  heightWidget = new QWidget;
168  QString tmp;
169 
170  heightLineLayout->addWidget(new QLabel("Height"));
171  height = new QLineEdit(tmp.setNum(originalHeight));
172  height->setMaxLength(5);
173  heightLineLayout->addWidget(height);
174  heightWidget->setLayout(heightLineLayout);
175  sizeGroupBoxLayout->addWidget(heightWidget);
176  connect( height, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textHeightChanged(const QString &) ) );
177
178
179  // width
180  QHBoxLayout *widthLineLayout = new QHBoxLayout;
181  widthWidget = new QWidget;
182
183  widthLineLayout->addWidget(new QLabel("Width "));
184  width = new QLineEdit(tmp.setNum(originalWidth));
185  width->setMaxLength(5);
186  widthLineLayout->addWidget(width);
187  widthWidget->setLayout(widthLineLayout);
188  sizeGroupBoxLayout->addWidget(widthWidget);
189  connect( width, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textWidthChanged(const QString &) ) );
190
191  sizeGroupBox->setLayout(sizeGroupBoxLayout);
192  globalVLayout->addWidget(sizeGroupBox);
193
194  heightWidget->setVisible(false);
195  widthWidget->setVisible(false);
196
197  // button ok/cancel box
198
199  QGroupBox *buttonGroupBox = new QGroupBox();
200  QHBoxLayout *buttonGroupBoxLayout = new QHBoxLayout;
201
202  buttonOk = new QPushButton( tr( "&OK" ) );
203  buttonOk->setAutoDefault( TRUE );
204  buttonOk->setDefault( TRUE );
205  buttonGroupBoxLayout->addWidget(buttonOk);
206
207  buttonCancel = new QPushButton( tr( "&Cancel" ) );
208  buttonCancel->setAutoDefault( TRUE );
209  buttonGroupBoxLayout->addWidget(buttonCancel);
210
211  buttonGroupBox->setLayout(buttonGroupBoxLayout);
212  globalVLayout->addWidget(buttonGroupBox);
213
214
215  setLayout(globalVLayout);
216
217  // signals and slots connections
218  connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) );
219  connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
220}
221
222
223
224int G4OpenGLQtExportDialog::getSliderValue()
225{
226  if (!qualitySlider) return -1;
227  return qualitySlider->value();
228}
229
230int G4OpenGLQtExportDialog::getHeight()
231{
232  if (!height) return -1;
233  return height->text().toInt();
234}
235
236int G4OpenGLQtExportDialog::getWidth()
237{
238  if (!width) return -1;
239  return width->text().toInt();
240}
241
242bool G4OpenGLQtExportDialog::getTransparency()
243{
244  if (!boxTransparency) return -1;
245  return boxTransparency->isChecked();
246}
247
248int G4OpenGLQtExportDialog::getNbColor()
249{
250  // Black and white
251  if (!colorButton->isChecked())
252    return 1;
253  // rgb color
254  return 3;
255}
256
257
258void G4OpenGLQtExportDialog::changeSizeBox(bool aClick)
259{
260  if (aClick) {
261    modify->toggle();
262  } else {
263    original->toggle();
264  }
265  if ( original->isChecked()) {
266    heightWidget->setVisible(false);
267    widthWidget->setVisible(false);
268    ratioCheckBox->setVisible(false);
269  } else {
270    heightWidget->setVisible(true);
271    widthWidget->setVisible(true);
272    ratioCheckBox->setVisible(true);
273  }
274}
275
276void G4OpenGLQtExportDialog::textWidthChanged(
277 const QString & s
278 )
279{
280  if (ratioCheckBox->isChecked()){
281    QString tmp;
282    width->setText(tmp.setNum(s.toInt()*originalHeight/originalHeight));
283  }
284}
285
286void G4OpenGLQtExportDialog::  textHeightChanged(
287 const QString & s
288)
289{
290  if (ratioCheckBox->isChecked()){
291    QString tmp;
292    width->setText(tmp.setNum(s.toInt()*originalWidth/originalWidth));
293  }
294}
295
296G4OpenGLQtExportDialog::~G4OpenGLQtExportDialog()
297{
298}
299
300
301#endif
Note: See TracBrowser for help on using the repository browser.