[Cmake-commits] [cmake-commits] clinton committed AddCacheEntry.cxx 1.3 1.4 AddCacheEntry.h 1.2 1.3 AddCacheEntry.ui 1.1 1.2 CMakeFirstConfigure.cxx NONE 1.1 CMakeFirstConfigure.h NONE 1.1 CMakeFirstConfigure.ui NONE 1.1 CMakeLists.txt 1.18 1.19 CMakeSetupDialog.cxx 1.50 1.51 CMakeSetupDialog.h 1.26 1.27 QCMake.cxx 1.23 1.24 QCMake.h 1.11 1.12 QCMakeCacheView.cxx 1.27 1.28 QCMakeCacheView.h 1.18 1.19 QCMakeWidgets.cxx NONE 1.1 QCMakeWidgets.h NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Thu May 15 19:21:03 EDT 2008


Update of /cvsroot/CMake/CMake/Source/QtDialog
In directory public:/mounts/ram/cvs-serv30170

Modified Files:
	AddCacheEntry.cxx AddCacheEntry.h AddCacheEntry.ui 
	CMakeLists.txt CMakeSetupDialog.cxx CMakeSetupDialog.h 
	QCMake.cxx QCMake.h QCMakeCacheView.cxx QCMakeCacheView.h 
Added Files:
	CMakeFirstConfigure.cxx CMakeFirstConfigure.h 
	CMakeFirstConfigure.ui QCMakeWidgets.cxx QCMakeWidgets.h 
Log Message:

ENH:  Add cross compiling support in the GUI in the same dialog that prompts for
      the generator on the first configure.  It either ask for a toolchain file
      or asks for all the information a toolchain file might contain.

      Also added option for setting non-default compilers if not cross compiling.
      Fixes #6849.

      Also a bit of code cleanup and re-organizing.



--- NEW FILE: QCMakeWidgets.cxx ---
/*=========================================================================

  Program:   CMake - Cross-Platform Makefile Generator
  Module:    $RCSfile: QCMakeWidgets.cxx,v $
  Language:  C++
  Date:      $Date: 2008-05-15 23:21:01 $
  Version:   $Revision: 1.1 $

  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.

     This software is distributed WITHOUT ANY WARRANTY; without even 
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
     PURPOSE.  See the above copyright notices for more information.

=========================================================================*/

#include "QCMakeWidgets.h"

#include <QDirModel>
#include <QFileInfo>
#include <QFileDialog>
#include <QToolButton>
#include <QResizeEvent>

QCMakeFileEditor::QCMakeFileEditor(QWidget* p, const QString& var)
  : QLineEdit(p), Variable(var)
{
  this->ToolButton = new QToolButton(this);
  this->ToolButton->setText("...");
  this->ToolButton->setCursor(QCursor(Qt::ArrowCursor));
  QObject::connect(this->ToolButton, SIGNAL(clicked(bool)),
                   this, SLOT(chooseFile()));
}

QCMakeFilePathEditor::QCMakeFilePathEditor(QWidget* p, const QString& var)
 : QCMakeFileEditor(p, var)
{
  this->setCompleter(new QCMakeFileCompleter(this, false));
}

QCMakePathEditor::QCMakePathEditor(QWidget* p, const QString& var)
 : QCMakeFileEditor(p, var)
{
  this->setCompleter(new QCMakeFileCompleter(this, true));
}

void QCMakeFileEditor::resizeEvent(QResizeEvent* e)
{
  // make the tool button fit on the right side
  int h = e->size().height();
  // move the line edit to make room for the tool button
  this->setContentsMargins(0, 0, h, 0);
  // put the tool button in its place
  this->ToolButton->resize(h, h);
  this->ToolButton->move(this->width() - h, 0);
}

void QCMakeFilePathEditor::chooseFile()
{
  // choose a file and set it
  QString path;
  QFileInfo info(this->text());
  QString title;
  if(this->Variable.isEmpty())
    {
    title = tr("Select File");
    }
  else
    {
    title = tr("Select File for %1");
    title = title.arg(this->Variable);
    }
  this->fileDialogExists(true);
  path = QFileDialog::getOpenFileName(this, title, info.absolutePath());
  this->fileDialogExists(false);
  
  if(!path.isEmpty())
    {
    this->setText(QDir::fromNativeSeparators(path));
    }
}

void QCMakePathEditor::chooseFile()
{
  // choose a file and set it
  QString path;
  QString title;
  if(this->Variable.isEmpty())
    {
    title = tr("Select Path");
    }
  else
    {
    title = tr("Select Path for %1");
    title = title.arg(this->Variable);
    }
  this->fileDialogExists(true);
  path = QFileDialog::getExistingDirectory(this, title, this->text());
  this->fileDialogExists(false);
  if(!path.isEmpty())
    {
    this->setText(QDir::fromNativeSeparators(path));
    }
}

QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs)
  : QCompleter(o)
{
  QDirModel* model = new QDirModel(this);
  if(dirs)
    {
    model->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot);
    }
  this->setModel(model);
}

QString QCMakeFileCompleter::pathFromIndex(const QModelIndex& idx) const
{
  return QDir::fromNativeSeparators(QCompleter::pathFromIndex(idx));
}


--- NEW FILE: QCMakeWidgets.h ---
/*=========================================================================

  Program:   CMake - Cross-Platform Makefile Generator
  Module:    $RCSfile: QCMakeWidgets.h,v $
  Language:  C++
  Date:      $Date: 2008-05-15 23:21:01 $
  Version:   $Revision: 1.1 $

  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.

     This software is distributed WITHOUT ANY WARRANTY; without even 
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
     PURPOSE.  See the above copyright notices for more information.

=========================================================================*/

#ifndef QCMakeWidgets_h
#define QCMakeWidgets_h

#include <QLineEdit>
#include <QCompleter>
class QToolButton;

// common widgets for Qt based CMake

/// Editor widget for editing paths or file paths
class QCMakeFileEditor : public QLineEdit
{
  Q_OBJECT
public:
  QCMakeFileEditor(QWidget* p, const QString& var);
protected slots:
  virtual void chooseFile() = 0;
signals:
  void fileDialogExists(bool);
protected:
  void resizeEvent(QResizeEvent* e);
  QToolButton* ToolButton;
  QString Variable;
};

/// editor widget for editing files
class QCMakePathEditor : public QCMakeFileEditor
{
  Q_OBJECT
public:
  QCMakePathEditor(QWidget* p = NULL, const QString& var = QString());
  void chooseFile();
};

/// editor widget for editing paths
class QCMakeFilePathEditor : public QCMakeFileEditor
{
  Q_OBJECT
public:
  QCMakeFilePathEditor(QWidget* p = NULL, const QString& var = QString());
  void chooseFile();
};

/// completer class that returns native cmake paths
class QCMakeFileCompleter : public QCompleter
{
  Q_OBJECT
public:
  QCMakeFileCompleter(QObject* o, bool dirs);
  virtual QString pathFromIndex(const QModelIndex& idx) const;
};

#endif


Index: QCMakeCacheView.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/QCMakeCacheView.cxx,v
retrieving revision 1.27
retrieving revision 1.28
diff -C 2 -d -r1.27 -r1.28
*** QCMakeCacheView.cxx	2 Apr 2008 19:28:17 -0000	1.27
--- QCMakeCacheView.cxx	15 May 2008 23:21:01 -0000	1.28
***************
*** 18,31 ****
  #include "QCMakeCacheView.h"
  
- #include <QToolButton>
- #include <QFileDialog>
  #include <QHBoxLayout>
  #include <QHeaderView>
  #include <QEvent>
- #include <QFileInfo>
  #include <QStyle>
  #include <QKeyEvent>
! #include <QMenu>
! #include <QDirModel>
  
  static QRegExp AdvancedRegExp[2] = { QRegExp("(false)"), QRegExp("(true|false)") };
--- 18,29 ----
  #include "QCMakeCacheView.h"
  
  #include <QHBoxLayout>
  #include <QHeaderView>
  #include <QEvent>
  #include <QStyle>
  #include <QKeyEvent>
! #include <QSortFilterProxyModel>
! 
! #include "QCMakeWidgets.h"
  
  static QRegExp AdvancedRegExp[2] = { QRegExp("(false)"), QRegExp("(true|false)") };
***************
*** 146,150 ****
  }
  
! static uint qHash(const QCMakeCacheProperty& p)
  {
    return qHash(p.Key);
--- 144,148 ----
  }
  
! static uint qHash(const QCMakeProperty& p)
  {
    return qHash(p.Key);
***************
*** 153,164 ****
  void QCMakeCacheModel::clear()
  {
!   this->setProperties(QCMakeCachePropertyList());
  }
  
! void QCMakeCacheModel::setProperties(const QCMakeCachePropertyList& props)
  {
!   QSet<QCMakeCacheProperty> newProps = props.toSet();
!   QSet<QCMakeCacheProperty> newProps2 = props.toSet();
!   QSet<QCMakeCacheProperty> oldProps = this->Properties.toSet();
    
    oldProps.intersect(newProps);
--- 151,162 ----
  void QCMakeCacheModel::clear()
  {
!   this->setProperties(QCMakePropertyList());
  }
  
! void QCMakeCacheModel::setProperties(const QCMakePropertyList& props)
  {
!   QSet<QCMakeProperty> newProps = props.toSet();
!   QSet<QCMakeProperty> newProps2 = props.toSet();
!   QSet<QCMakeProperty> oldProps = this->Properties.toSet();
    
    oldProps.intersect(newProps);
***************
*** 171,175 ****
    this->Properties = newProps.toList();
    qSort(this->Properties);
!   QCMakeCachePropertyList tmp = newProps2.toList();
    qSort(tmp);
    this->Properties += tmp;
--- 169,173 ----
    this->Properties = newProps.toList();
    qSort(this->Properties);
!   QCMakePropertyList tmp = newProps2.toList();
    qSort(tmp);
    this->Properties += tmp;
***************
*** 178,185 ****
  }
    
! QCMakeCachePropertyList QCMakeCacheModel::properties() const
  {
    return this->Properties;
  }
  
  void QCMakeCacheModel::setEditEnabled(bool e)
--- 176,210 ----
  }
    
! QCMakePropertyList QCMakeCacheModel::properties() const
  {
    return this->Properties;
  }
+   
+ bool QCMakeCacheModel::insertProperty(int row, QCMakeProperty::PropertyType t,
+                       const QString& name, const QString& description,
+                       const QVariant& value, bool advanced)
+ {
+   if(this->insertRows(row, 1, QModelIndex()))
+     {
+     QModelIndex idx1 = this->index(row, 0);
+     QModelIndex idx2 = this->index(row, 1);
+     
+     this->setData(idx1, t, QCMakeCacheModel::TypeRole);
+     this->setData(idx1, name, Qt::DisplayRole);
+     this->setData(idx1, description, QCMakeCacheModel::HelpRole);
+     this->setData(idx1, advanced, QCMakeCacheModel::AdvancedRole);
+     if(t == QCMakeProperty::BOOL)
+       {
+       this->setData(idx2, value.toBool() ? Qt::Checked : Qt::Unchecked,
+         Qt::CheckStateRole);
+       }
+     else
+       {
+       this->setData(idx2, value, Qt::DisplayRole);
+       }
+     return true;
+     }
+   return false;
+ }
  
  void QCMakeCacheModel::setEditEnabled(bool e)
***************
*** 216,220 ****
    else if(idx.column() == 1 && (role == Qt::DisplayRole || role == Qt::EditRole))
      {
!     if(this->Properties[idx.row()].Type != QCMakeCacheProperty::BOOL)
        {
        return this->Properties[idx.row()].Value;
--- 241,245 ----
    else if(idx.column() == 1 && (role == Qt::DisplayRole || role == Qt::EditRole))
      {
!     if(this->Properties[idx.row()].Type != QCMakeProperty::BOOL)
        {
        return this->Properties[idx.row()].Value;
***************
*** 223,227 ****
    else if(idx.column() == 1 && role == Qt::CheckStateRole)
      {
!     if(this->Properties[idx.row()].Type == QCMakeCacheProperty::BOOL)
        {
        return this->Properties[idx.row()].Value.toBool() ? Qt::Checked : Qt::Unchecked;
--- 248,252 ----
    else if(idx.column() == 1 && role == Qt::CheckStateRole)
      {
!     if(this->Properties[idx.row()].Type == QCMakeProperty::BOOL)
        {
        return this->Properties[idx.row()].Value.toBool() ? Qt::Checked : Qt::Unchecked;
***************
*** 279,283 ****
      f |= Qt::ItemIsEditable;
      // booleans are editable in place
!     if(this->Properties[idx.row()].Type == QCMakeCacheProperty::BOOL)
        {
        f |= Qt::ItemIsUserCheckable;
--- 304,308 ----
      f |= Qt::ItemIsEditable;
      // booleans are editable in place
!     if(this->Properties[idx.row()].Type == QCMakeProperty::BOOL)
        {
        f |= Qt::ItemIsUserCheckable;
***************
*** 312,316 ****
    else if(role == QCMakeCacheModel::TypeRole)
      {
!     this->Properties[idx.row()].Type = static_cast<QCMakeCacheProperty::PropertyType>(value.toInt());
      }
    else if(role == QCMakeCacheModel::AdvancedRole)
--- 337,341 ----
    else if(role == QCMakeCacheModel::TypeRole)
      {
!     this->Properties[idx.row()].Type = static_cast<QCMakeProperty::PropertyType>(value.toInt());
      }
    else if(role == QCMakeCacheModel::AdvancedRole)
***************
*** 325,329 ****
    if(idx.column() == 0)
      {
!     if(this->Properties[idx.row()].Type != QCMakeCacheProperty::BOOL)
        {
        return this->index(idx.row(), 1);
--- 350,354 ----
    if(idx.column() == 0)
      {
!     if(this->Properties[idx.row()].Type != QCMakeProperty::BOOL)
        {
        return this->index(idx.row(), 1);
***************
*** 362,366 ****
    for(int i=0; i<num; i++)
      {
!     this->Properties.insert(row+i, QCMakeCacheProperty());
      if(this->NewCount >= row)
        {
--- 387,391 ----
    for(int i=0; i<num; i++)
      {
!     this->Properties.insert(row+i, QCMakeProperty());
      if(this->NewCount >= row)
        {
***************
*** 388,399 ****
    QModelIndex var = model->index(idx.row(), 0);
    QVariant type = idx.data(QCMakeCacheModel::TypeRole);
!   if(type == QCMakeCacheProperty::BOOL)
      {
      return NULL;
      }
!   else if(type == QCMakeCacheProperty::PATH)
      {
!     QCMakeCachePathEditor* editor =
!       new QCMakeCachePathEditor(p, 
        var.data(Qt::DisplayRole).toString());
      QObject::connect(editor, SIGNAL(fileDialogExists(bool)), this,
--- 413,424 ----
    QModelIndex var = model->index(idx.row(), 0);
    QVariant type = idx.data(QCMakeCacheModel::TypeRole);
!   if(type == QCMakeProperty::BOOL)
      {
      return NULL;
      }
!   else if(type == QCMakeProperty::PATH)
      {
!     QCMakePathEditor* editor =
!       new QCMakePathEditor(p, 
        var.data(Qt::DisplayRole).toString());
      QObject::connect(editor, SIGNAL(fileDialogExists(bool)), this,
***************
*** 401,408 ****
      return editor;
      }
!   else if(type == QCMakeCacheProperty::FILEPATH)
      {
!     QCMakeCacheFilePathEditor* editor =
!       new QCMakeCacheFilePathEditor(p, 
        var.data(Qt::DisplayRole).toString());
      QObject::connect(editor, SIGNAL(fileDialogExists(bool)), this,
--- 426,433 ----
      return editor;
      }
!   else if(type == QCMakeProperty::FILEPATH)
      {
!     QCMakeFilePathEditor* editor =
!       new QCMakeFilePathEditor(p, 
        var.data(Qt::DisplayRole).toString());
      QObject::connect(editor, SIGNAL(fileDialogExists(bool)), this,
***************
*** 468,567 ****
  
    
- QCMakeCacheFileEditor::QCMakeCacheFileEditor(QWidget* p, const QString& var)
-   : QLineEdit(p), Variable(var)
- {
-   // this *is* instead of has a line edit so QAbstractItemView
-   // doesn't get confused with what the editor really is
-   this->setContentsMargins(0, 0, 0, 0);
-   this->ToolButton = new QToolButton(this);
-   this->ToolButton->setText("...");
-   this->ToolButton->setCursor(QCursor(Qt::ArrowCursor));
-   QObject::connect(this->ToolButton, SIGNAL(clicked(bool)),
-                    this, SLOT(chooseFile()));
- }
- 
- QCMakeCacheFilePathEditor::QCMakeCacheFilePathEditor(QWidget* p, const QString& var)
-  : QCMakeCacheFileEditor(p, var)
- {
-   this->setCompleter(new QCMakeFileCompleter(this, false));
- }
- 
- QCMakeCachePathEditor::QCMakeCachePathEditor(QWidget* p, const QString& var)
-  : QCMakeCacheFileEditor(p, var)
- {
- this->setCompleter(new QCMakeFileCompleter(this, true));
- }
- 
- void QCMakeCacheFileEditor::resizeEvent(QResizeEvent* e)
- {
-   // make the tool button fit on the right side
-   int h = e->size().height();
-   this->ToolButton->resize(h, h);
-   this->ToolButton->move(this->width() - h, 0);
-   this->setContentsMargins(0, 0, h, 0);
- }
- 
- void QCMakeCacheFilePathEditor::chooseFile()
- {
-   // choose a file and set it
-   QString path;
-   QFileInfo info(this->text());
-   QString title;
-   if(this->Variable.isEmpty())
-     {
-     title = tr("Select File");
-     }
-   else
-     {
-     title = tr("Select File for %1");
-     title = title.arg(this->Variable);
-     }
-   this->fileDialogExists(true);
-   path = QFileDialog::getOpenFileName(this, title, info.absolutePath());
-   this->fileDialogExists(false);
-   
-   if(!path.isEmpty())
-     {
-     this->setText(QDir::fromNativeSeparators(path));
-     }
- }
- 
- void QCMakeCachePathEditor::chooseFile()
- {
-   // choose a file and set it
-   QString path;
-   QString title;
-   if(this->Variable.isEmpty())
-     {
-     title = tr("Select Path");
-     }
-   else
-     {
-     title = tr("Select Path for %1");
-     title = title.arg(this->Variable);
-     }
-   this->fileDialogExists(true);
-   path = QFileDialog::getExistingDirectory(this, title, this->text());
-   this->fileDialogExists(false);
-   if(!path.isEmpty())
-     {
-     this->setText(QDir::fromNativeSeparators(path));
-     }
- }
- 
- QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs)
-   : QCompleter(o)
- {
-   QDirModel* model = new QDirModel(this);
-   if(dirs)
-     {
-     model->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot);
-     }
-   this->setModel(model);
- }
- 
- QString QCMakeFileCompleter::pathFromIndex(const QModelIndex& idx) const
- {
-   return QDir::fromNativeSeparators(QCompleter::pathFromIndex(idx));
- }
- 
--- 493,494 ----

--- NEW FILE: CMakeFirstConfigure.cxx ---

#include "CMakeFirstConfigure.h"

#include <QSettings>

CMakeFirstConfigure::CMakeFirstConfigure()
{
  this->UI.setupUi(this);
  this->UI.useDefaults->setChecked(true);
  this->updatePage();
  
  this->UI.useToolChainFile->setChecked(true);
  this->updateToolChainPage();

  QObject::connect(this->UI.useDefaults, SIGNAL(toggled(bool)),
                   this, SLOT(updatePage()));
  QObject::connect(this->UI.compilerSetup, SIGNAL(toggled(bool)),
                   this, SLOT(updatePage()));
  QObject::connect(this->UI.crossCompilerSetup, SIGNAL(toggled(bool)),
                   this, SLOT(updatePage()));
  
  QObject::connect(this->UI.useToolChainFile, SIGNAL(toggled(bool)),
                   this, SLOT(updateToolChainPage()));
}

CMakeFirstConfigure::~CMakeFirstConfigure()
{
}

void CMakeFirstConfigure::setGenerators(const QStringList& gens)
{
  this->UI.generators->clear();
  this->UI.generators->addItems(gens);
}

QString CMakeFirstConfigure::getGenerator() const
{
  return this->UI.generators->currentText();
}

void CMakeFirstConfigure::loadFromSettings()
{
  QSettings settings;
  settings.beginGroup("Settings/StartPath");

  // restore generator
  QString lastGen = settings.value("LastGenerator").toString();
  int idx = this->UI.generators->findText(lastGen);
  if(idx != -1)
    {
    this->UI.generators->setCurrentIndex(idx);
    }
  settings.endGroup();

  // restore compiler setup
  settings.beginGroup("Settings/Compiler");
  this->UI.CCompiler->setText(settings.value("CCompiler").toString());
  this->UI.CXXCompiler->setText(settings.value("CXXCompiler").toString());
  this->UI.FortranCompiler->setText(settings.value("FortranCompiler").toString());
  settings.endGroup();

  // restore cross compiler setup
  settings.beginGroup("Settings/CrossCompiler");
  this->UI.crossCCompiler->setText(settings.value("CCompiler").toString());
  this->UI.crossCXXCompiler->setText(settings.value("CXXCompiler").toString());
  this->UI.crossFortranCompiler->setText(settings.value("FortranCompiler").toString());
  this->UI.useToolChainFile->setChecked(settings.value("UseToolChainFile", true).toBool());
  this->UI.toolChainFile->setText(settings.value("ToolChainFile").toString());
  this->UI.systemName->setText(settings.value("SystemName").toString());
  this->UI.systemVersion->setText(settings.value("SystemVersion").toString());
  this->UI.systemProcessor->setText(settings.value("SystemProcessor").toString());
  this->UI.crossFindRoot->setText(settings.value("FindRoot").toString());
  this->UI.crossProgramMode->setCurrentIndex(settings.value("ProgramMode", 0).toInt());
  this->UI.crossLibraryMode->setCurrentIndex(settings.value("LibraryMode", 0).toInt());
  this->UI.crossIncludeMode->setCurrentIndex(settings.value("IncludeMode", 0).toInt());
  settings.endGroup();
}

void CMakeFirstConfigure::saveToSettings()
{
  QSettings settings;
  settings.beginGroup("Settings/StartPath");

  // save generator
  QString lastGen = this->UI.generators->currentText();
  settings.setValue("LastGenerator", lastGen);

  settings.endGroup();

  // save compiler setup 
  settings.beginGroup("Settings/Compiler");
  settings.setValue("CCompiler", this->UI.CCompiler->text());
  settings.setValue("CXXCompiler", this->UI.CXXCompiler->text());
  settings.setValue("FortranCompiler", this->UI.FortranCompiler->text());
  settings.endGroup();

  // save cross compiler setup
  settings.beginGroup("Settings/CrossCompiler");
  settings.setValue("CCompiler", this->UI.crossCCompiler->text());
  settings.setValue("CXXCompiler", this->UI.crossCXXCompiler->text());
  settings.setValue("FortranCompiler", this->UI.crossFortranCompiler->text());
  settings.setValue("UseToolChainFile", this->UI.useToolChainFile->isChecked());
  settings.setValue("ToolChainFile", this->UI.toolChainFile->text());
  settings.setValue("SystemName", this->UI.systemName->text());
  settings.setValue("SystemVersion", this->UI.systemVersion->text());
  settings.setValue("SystemProcessor", this->UI.systemProcessor->text());
  settings.setValue("FindRoot", this->UI.crossFindRoot->text());
  settings.setValue("ProgramMode", this->UI.crossProgramMode->currentIndex());
  settings.setValue("LibraryMode", this->UI.crossLibraryMode->currentIndex());
  settings.setValue("IncludeMode", this->UI.crossIncludeMode->currentIndex());
  settings.endGroup();
}

void CMakeFirstConfigure::updatePage()
{
  if(this->UI.useDefaults->isChecked())
    {
    this->UI.stackedWidget->setCurrentIndex(0);
    }
  else if(this->UI.compilerSetup->isChecked())
    {
    this->UI.stackedWidget->setCurrentIndex(1);
    }
  else if(this->UI.crossCompilerSetup->isChecked())
    {
    this->UI.stackedWidget->setCurrentIndex(2);
    }
}

void CMakeFirstConfigure::updateToolChainPage()
{
  if(this->UI.useToolChainFile->isChecked())
    {
    this->UI.toolChainStack->setCurrentIndex(0);
    }
  else
    {
    this->UI.toolChainStack->setCurrentIndex(1);
    }
}

bool CMakeFirstConfigure::defaultSetup() const
{
  return this->UI.useDefaults->isChecked();
}

bool CMakeFirstConfigure::compilerSetup() const
{
  return this->UI.compilerSetup->isChecked();
}

bool CMakeFirstConfigure::crossCompilerSetup() const
{
  return this->UI.crossCompilerSetup->isChecked();
}

QString CMakeFirstConfigure::crossCompilerToolChainFile() const
{
  if(this->UI.useToolChainFile->isChecked())
    {
    return this->UI.toolChainFile->text();
    }
  return QString();
}

QString CMakeFirstConfigure::getSystemName() const
{
  return this->UI.systemName->text();
}

QString CMakeFirstConfigure::getCCompiler() const
{
  if(this->compilerSetup())
    {
    return this->UI.CCompiler->text();
    }
  else if(this->crossCompilerSetup())
    {
    return this->UI.crossCCompiler->text();
    }
  return QString();
}

QString CMakeFirstConfigure::getCXXCompiler() const
{
  if(this->compilerSetup())
    {
    return this->UI.CXXCompiler->text();
    }
  else if(this->crossCompilerSetup())
    {
    return this->UI.crossCXXCompiler->text();
    }
  return QString();
}

QString CMakeFirstConfigure::getFortranCompiler() const
{
  if(this->compilerSetup())
    {
    return this->UI.FortranCompiler->text();
    }
  else if(this->crossCompilerSetup())
    {
    return this->UI.crossFortranCompiler->text();
    }
  return QString();
}


QString CMakeFirstConfigure::getSystemVersion() const
{
  return this->UI.systemVersion->text();
}

QString CMakeFirstConfigure::getSystemProcessor() const
{
  return this->UI.systemProcessor->text();
}


QString CMakeFirstConfigure::getCrossRoot() const
{
  return this->UI.crossFindRoot->text();
}

static const char* crossModes[3] = {"BOTH", "ONLY", "NEVER" };

QString CMakeFirstConfigure::getCrossProgramMode() const
{
  return crossModes[this->UI.crossProgramMode->currentIndex()];
}

QString CMakeFirstConfigure::getCrossLibraryMode() const
{
  return crossModes[this->UI.crossLibraryMode->currentIndex()];
}

QString CMakeFirstConfigure::getCrossIncludeMode() const
{
  return crossModes[this->UI.crossIncludeMode->currentIndex()];
}



--- NEW FILE: CMakeFirstConfigure.h ---

#ifndef CMakeFirstConfigure_h
#define CMakeFirstConfigure_h

#include <QDialog>
#include "ui_CMakeFirstConfigure.h"

class CMakeFirstConfigure : public QDialog
{
  Q_OBJECT
public:
  CMakeFirstConfigure();
  ~CMakeFirstConfigure();

  void setGenerators(const QStringList& gens);
  QString getGenerator() const;

  bool defaultSetup() const;
  bool compilerSetup() const;
  bool crossCompilerSetup() const;
  QString crossCompilerToolChainFile() const;

  QString getCCompiler() const;
  QString getCXXCompiler() const;
  QString getFortranCompiler() const;
  
  QString getSystemName() const;
  QString getSystemVersion() const;
  QString getSystemProcessor() const;
  
  QString getCrossRoot() const;
  QString getCrossProgramMode() const;
  QString getCrossLibraryMode() const;
  QString getCrossIncludeMode() const;

  void loadFromSettings();
  void saveToSettings();

protected slots:
  void updatePage();
  void updateToolChainPage();

protected:
  Ui::CMakeFirstConfigure UI;
};

#endif // CMakeFirstConfigure_h


Index: AddCacheEntry.ui
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/AddCacheEntry.ui,v
retrieving revision 1.1
retrieving revision 1.2
diff -C 2 -d -r1.1 -r1.2
*** AddCacheEntry.ui	13 Nov 2007 04:54:49 -0000	1.1
--- AddCacheEntry.ui	15 May 2008 23:21:01 -0000	1.2
***************
*** 66,77 ****
   <customwidgets>
    <customwidget>
!    <class>QCMakeCachePathEditor</class>
     <extends>QLineEdit</extends>
!    <header>QCMakeCacheView.h</header>
    </customwidget>
    <customwidget>
!    <class>QCMakeCacheFilePathEditor</class>
     <extends>QLineEdit</extends>
!    <header>QCMakeCacheView.h</header>
    </customwidget>
   </customwidgets>
--- 66,77 ----
   <customwidgets>
    <customwidget>
!    <class>QCMakePathEditor</class>
     <extends>QLineEdit</extends>
!    <header>QCMakeWidgets.h</header>
    </customwidget>
    <customwidget>
!    <class>QCMakeFilePathEditor</class>
     <extends>QLineEdit</extends>
!    <header>QCMakeWidgets.h</header>
    </customwidget>
   </customwidgets>

Index: QCMakeCacheView.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/QCMakeCacheView.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -C 2 -d -r1.18 -r1.19
*** QCMakeCacheView.h	2 Apr 2008 19:28:17 -0000	1.18
--- QCMakeCacheView.h	15 May 2008 23:21:01 -0000	1.19
***************
*** 22,33 ****
  #include <QTableView>
  #include <QAbstractTableModel>
- #include <QCheckBox>
- #include <QLineEdit>
  #include <QItemDelegate>
- #include <QSortFilterProxyModel>
- #include <QCompleter>
  
  class QCMakeCacheModel;
- class QToolButton;
  
  
--- 22,29 ----
  #include <QTableView>
  #include <QAbstractTableModel>
  #include <QItemDelegate>
  
+ class QSortFilterProxyModel;
  class QCMakeCacheModel;
  
  
***************
*** 66,74 ****
  
  public slots:
!   void setProperties(const QCMakeCachePropertyList& props);
    void clear();
    void setEditEnabled(bool);
    bool removeRows(int row, int count, const QModelIndex& idx = QModelIndex());
    bool insertRows(int row, int num, const QModelIndex&);
  
  public:
--- 62,76 ----
  
  public slots:
!   void setProperties(const QCMakePropertyList& props);
    void clear();
    void setEditEnabled(bool);
    bool removeRows(int row, int count, const QModelIndex& idx = QModelIndex());
    bool insertRows(int row, int num, const QModelIndex&);
+   
+   // insert a property at a row specifying all the information about the
+   // property
+   bool insertProperty(int row, QCMakeProperty::PropertyType t,
+                       const QString& name, const QString& description,
+                       const QVariant& value, bool advanced);
  
  public:
***************
*** 84,88 ****
  
    // get the properties
!   QCMakeCachePropertyList properties() const;
    
    // editing enabled
--- 86,90 ----
  
    // get the properties
!   QCMakePropertyList properties() const;
    
    // editing enabled
***************
*** 92,96 ****
  
  protected:
!   QCMakeCachePropertyList Properties;
    int NewCount;
    bool EditEnabled;
--- 94,98 ----
  
  protected:
!   QCMakePropertyList Properties;
    int NewCount;
    bool EditEnabled;
***************
*** 116,159 ****
  };
  
- /// Editor widget for editing paths or file paths
- class QCMakeCacheFileEditor : public QLineEdit
- {
-   Q_OBJECT
- public:
-   QCMakeCacheFileEditor(QWidget* p, const QString& var);
- protected slots:
-   virtual void chooseFile() = 0;
- signals:
-   void fileDialogExists(bool);
- protected:
-   void resizeEvent(QResizeEvent* e);
-   QToolButton* ToolButton;
-   QString Variable;
- };
- 
- class QCMakeCachePathEditor : public QCMakeCacheFileEditor
- {
-   Q_OBJECT
- public:
-   QCMakeCachePathEditor(QWidget* p = NULL, const QString& var = QString());
-   void chooseFile();
- };
- 
- class QCMakeCacheFilePathEditor : public QCMakeCacheFileEditor
- {
-   Q_OBJECT
- public:
-   QCMakeCacheFilePathEditor(QWidget* p = NULL, const QString& var = QString());
-   void chooseFile();
- };
- 
- /// completer class that returns native cmake paths
- class QCMakeFileCompleter : public QCompleter
- {
- public:
-   QCMakeFileCompleter(QObject* o, bool dirs);
-   virtual QString pathFromIndex(const QModelIndex& idx) const;
- };
- 
  #endif
  
--- 118,121 ----

Index: AddCacheEntry.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/AddCacheEntry.cxx,v
retrieving revision 1.3
retrieving revision 1.4
diff -C 2 -d -r1.3 -r1.4
*** AddCacheEntry.cxx	17 Nov 2007 02:18:48 -0000	1.3
--- AddCacheEntry.cxx	15 May 2008 23:21:01 -0000	1.4
***************
*** 22,28 ****
  static const QString TypeStrings[NumTypes] = 
    { "BOOL", "PATH", "FILEPATH", "STRING" };
! static const QCMakeCacheProperty::PropertyType Types[NumTypes] = 
!   { QCMakeCacheProperty::BOOL, QCMakeCacheProperty::PATH, 
!     QCMakeCacheProperty::FILEPATH, QCMakeCacheProperty::STRING}; 
  
  AddCacheEntry::AddCacheEntry(QWidget* p)
--- 22,28 ----
  static const QString TypeStrings[NumTypes] = 
    { "BOOL", "PATH", "FILEPATH", "STRING" };
! static const QCMakeProperty::PropertyType Types[NumTypes] = 
!   { QCMakeProperty::BOOL, QCMakeProperty::PATH, 
!     QCMakeProperty::FILEPATH, QCMakeProperty::STRING}; 
  
  AddCacheEntry::AddCacheEntry(QWidget* p)
***************
*** 35,40 ****
      }
    QWidget* cb = new QCheckBox();
!   QWidget* path = new QCMakeCachePathEditor();
!   QWidget* filepath = new QCMakeCacheFilePathEditor();
    QWidget* string = new QLineEdit();
    this->StackedWidget->addWidget(cb);
--- 35,40 ----
      }
    QWidget* cb = new QCheckBox();
!   QWidget* path = new QCMakePathEditor();
!   QWidget* filepath = new QCMakeFilePathEditor();
    QWidget* string = new QLineEdit();
    this->StackedWidget->addWidget(cb);
***************
*** 74,78 ****
  }
  
! QCMakeCacheProperty::PropertyType AddCacheEntry::type() const
  {
    int idx = this->Type->currentIndex();
--- 74,78 ----
  }
  
! QCMakeProperty::PropertyType AddCacheEntry::type() const
  {
    int idx = this->Type->currentIndex();
***************
*** 81,85 ****
      return Types[idx];
      }
!   return QCMakeCacheProperty::BOOL;
  }
  
--- 81,85 ----
      return Types[idx];
      }
!   return QCMakeProperty::BOOL;
  }
  

Index: CMakeSetupDialog.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/CMakeSetupDialog.cxx,v
retrieving revision 1.50
retrieving revision 1.51
diff -C 2 -d -r1.50 -r1.51
*** CMakeSetupDialog.cxx	14 Apr 2008 20:15:28 -0000	1.50
--- CMakeSetupDialog.cxx	15 May 2008 23:21:01 -0000	1.51
***************
*** 37,40 ****
--- 37,41 ----
  #include "QCMakeCacheView.h"
  #include "AddCacheEntry.h"
+ #include "CMakeFirstConfigure.h"
  
  QCMakeThread::QCMakeThread(QObject* p) 
***************
*** 61,65 ****
    : ExitAfterGenerate(true), CacheModified(false), CurrentState(Interrupting)
  {
-   this->SuppressDevWarnings = false;
    // create the GUI
    QSettings settings;
--- 62,65 ----
***************
*** 105,113 ****
  #endif  
    QMenu* OptionsMenu = this->menuBar()->addMenu(tr("&Options"));
!   QAction* supressDevWarningsAction = OptionsMenu->addAction(tr("&Suppress dev Warnings (-Wno-dev)"));
!   QObject::connect(supressDevWarningsAction, SIGNAL(triggered(bool)), 
!                    this, SLOT(doSuppressDev()));
  
-   supressDevWarningsAction->setCheckable(true);
    QAction* debugAction = OptionsMenu->addAction(tr("&Debug Output"));
    debugAction->setCheckable(true);
--- 105,111 ----
  #endif  
    QMenu* OptionsMenu = this->menuBar()->addMenu(tr("&Options"));
!   this->SuppressDevWarningsAction = OptionsMenu->addAction(tr("&Suppress dev Warnings (-Wno-dev)"));
!   this->SuppressDevWarningsAction->setCheckable(true);
  
    QAction* debugAction = OptionsMenu->addAction(tr("&Debug Output"));
    debugAction->setCheckable(true);
***************
*** 154,160 ****
    // now the cmake worker thread is running, lets make our connections to it
    QObject::connect(this->CMakeThread->cmakeInstance(), 
!       SIGNAL(propertiesChanged(const QCMakeCachePropertyList&)),
        this->CacheValues->cacheModel(),
!       SLOT(setProperties(const QCMakeCachePropertyList&)));
  
    QObject::connect(this->ConfigureButton, SIGNAL(clicked(bool)),
--- 152,158 ----
    // now the cmake worker thread is running, lets make our connections to it
    QObject::connect(this->CMakeThread->cmakeInstance(), 
!       SIGNAL(propertiesChanged(const QCMakePropertyList&)),
        this->CacheValues->cacheModel(),
!       SLOT(setProperties(const QCMakePropertyList&)));
  
    QObject::connect(this->ConfigureButton, SIGNAL(clicked(bool)),
***************
*** 221,224 ****
--- 219,224 ----
                     this, SLOT(addCacheEntry()));
  
+   QObject::connect(this->SuppressDevWarningsAction, SIGNAL(triggered(bool)), 
+                    this->CMakeThread->cmakeInstance(), SLOT(setSuppressDevWarnings(bool)));
    
    if(!this->SourceDirectory->text().isEmpty() ||
***************
*** 276,283 ****
      }
  
!   // prompt for generator if it hasn't been set
    if(this->CMakeThread->cmakeInstance()->generator().isEmpty())
      {
!     if(!this->promptForGenerator())
        {
        return;
--- 276,283 ----
      }
  
!   // if no generator, prompt for it and other setup stuff
    if(this->CMakeThread->cmakeInstance()->generator().isEmpty())
      {
!     if(!this->setupFirstConfigure())
        {
        return;
***************
*** 293,297 ****
    QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
      "setProperties", Qt::QueuedConnection, 
!     Q_ARG(QCMakeCachePropertyList,
        this->CacheValues->cacheModel()->properties()));
    QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
--- 293,297 ----
    QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
      "setProperties", Qt::QueuedConnection, 
!     Q_ARG(QCMakePropertyList,
        this->CacheValues->cacheModel()->properties()));
    QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(),
***************
*** 330,340 ****
  }
  
- void CMakeSetupDialog::doSuppressDev()
- {
-   this->SuppressDevWarnings = !this->SuppressDevWarnings;
-   this->CMakeThread->cmakeInstance()->
-     SetSuppressDevWarnings(this->SuppressDevWarnings);
- }
- 
  void CMakeSetupDialog::doInstallForCommandLine()
  {
--- 330,333 ----
***************
*** 543,581 ****
  }
  
! bool CMakeSetupDialog::promptForGenerator()
  {
!   QSettings settings;
!   settings.beginGroup("Settings/StartPath");
!   QString lastGen = settings.value("LastGenerator").toString();
  
!   QStringList gens = this->CMakeThread->cmakeInstance()->availableGenerators();
!   QDialog dialog;
!   dialog.setWindowTitle(tr("Choose Generator"));
!   QLabel* lab = new QLabel(&dialog);
!   lab->setText(tr("Please select what build system you want CMake to generate files for.\n"
!                     "You should select the tool that you will use to build the project.\n"
!                     "Press OK once you have made your selection."));
!   QComboBox* combo = new QComboBox(&dialog);
!   combo->addItems(gens);
!   int idx = combo->findText(lastGen);
!   if(idx != -1)
!     {
!     combo->setCurrentIndex(idx);
!     }
!   QDialogButtonBox* btns = new QDialogButtonBox(QDialogButtonBox::Ok |
!                                                 QDialogButtonBox::Cancel,
!                                                 Qt::Horizontal, &dialog);
!   QObject::connect(btns, SIGNAL(accepted()), &dialog, SLOT(accept()));
!   QObject::connect(btns, SIGNAL(rejected()), &dialog, SLOT(reject()));
    
-   QVBoxLayout* l = new QVBoxLayout(&dialog);
-   l->addWidget(lab);
-   l->addWidget(combo);
-   l->addWidget(btns);
    if(dialog.exec() == QDialog::Accepted)
      {
!     lastGen = combo->currentText();
!     settings.setValue("LastGenerator", lastGen);
!     this->CMakeThread->cmakeInstance()->setGenerator(combo->currentText());
      return true;
      }
--- 536,622 ----
  }
  
! bool CMakeSetupDialog::setupFirstConfigure()
  {
!   CMakeFirstConfigure dialog;
  
!   // initialize dialog and restore saved settings
! 
!   // add generators
!   dialog.setGenerators(this->CMakeThread->cmakeInstance()->availableGenerators());
! 
!   // restore from settings
!   dialog.loadFromSettings();
    
    if(dialog.exec() == QDialog::Accepted)
      {
!     dialog.saveToSettings();
!     this->CMakeThread->cmakeInstance()->setGenerator(dialog.getGenerator());
!     
!     QCMakeCacheModel* m = this->CacheValues->cacheModel();
! 
!     if(dialog.compilerSetup())
!       {
!       QString fortranCompiler = dialog.getFortranCompiler();
!       if(!fortranCompiler.isEmpty())
!         {
!         m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_Fortran_COMPILER", 
!                           "Fortran compiler.", fortranCompiler, false);
!         }
!       QString cxxCompiler = dialog.getCXXCompiler();
!       if(!cxxCompiler.isEmpty())
!         {
!         m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_CXX_COMPILER", 
!                           "CXX compiler.", cxxCompiler, false);
!         }
!       
!       QString cCompiler = dialog.getCCompiler();
!       if(!cCompiler.isEmpty())
!         {
!         m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_C_COMPILER", 
!                           "C compiler.", cCompiler, false);
!         }
!       }
!     else if(dialog.crossCompilerSetup())
!       {
!       QString toolchainFile = dialog.crossCompilerToolChainFile();
!       if(!toolchainFile.isEmpty())
!         {
!         m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_TOOLCHAIN_FILE", 
!                           "Cross Compile ToolChain File", toolchainFile, false);
!         }
!       else
!         {
!         QString fortranCompiler = dialog.getFortranCompiler();
!         if(!fortranCompiler.isEmpty())
!           {
!           m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_Fortran_COMPILER", 
!                             "Fortran compiler.", fortranCompiler, false);
!           }
! 
!         QString mode = dialog.getCrossIncludeMode();
!         m->insertProperty(0, QCMakeProperty::STRING, "CMAKE_FIND_ROOT_PATH_MODE_INCLUDE", 
!                           "CMake Find Include Mode", mode, false);
!         mode = dialog.getCrossLibraryMode();
!         m->insertProperty(0, QCMakeProperty::STRING, "CMAKE_FIND_ROOT_PATH_MODE_LIBRARY", 
!                           "CMake Find Library Mode", mode, false);
!         mode = dialog.getCrossProgramMode();
!         m->insertProperty(0, QCMakeProperty::STRING, "CMAKE_FIND_ROOT_PATH_MODE_PROGRAM", 
!                           "CMake Find Program Mode", mode, false);
!         
!         QString rootPath = dialog.getCrossRoot();
!         m->insertProperty(0, QCMakeProperty::PATH, "CMAKE_FIND_ROOT_PATH", 
!                           "CMake Find Root Path", rootPath, false);
! 
!         QString systemName = dialog.getSystemName();
!         m->insertProperty(0, QCMakeProperty::STRING, "CMAKE_SYSTEM_NAME", 
!                           "CMake System Name", systemName, false);
!         QString cxxCompiler = dialog.getCXXCompiler();
!         m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_CXX_COMPILER", 
!                           "CXX compiler.", cxxCompiler, false);
!         QString cCompiler = dialog.getCCompiler();
!         m->insertProperty(0, QCMakeProperty::FILEPATH, "CMAKE_C_COMPILER", 
!                           "C compiler.", cCompiler, false);
!         }
!       }
      return true;
      }
***************
*** 857,874 ****
      {
      QCMakeCacheModel* m = this->CacheValues->cacheModel();
!     m->insertRows(0, 1, QModelIndex());
!     m->setData(m->index(0, 0), w->type(), QCMakeCacheModel::TypeRole);
!     m->setData(m->index(0, 0), w->name(), Qt::DisplayRole);
!     m->setData(m->index(0, 0), w->description(), QCMakeCacheModel::HelpRole);
!     m->setData(m->index(0, 0), 0, QCMakeCacheModel::AdvancedRole);
!     if(w->type() == QCMakeCacheProperty::BOOL)
!       {
!       m->setData(m->index(0, 1), w->value().toBool() ? 
!           Qt::Checked : Qt::Unchecked, Qt::CheckStateRole);
!       }
!     else
!       {
!       m->setData(m->index(0, 1), w->value(), Qt::DisplayRole);
!       }
      }
  }
--- 898,902 ----
      {
      QCMakeCacheModel* m = this->CacheValues->cacheModel();
!     m->insertProperty(0, w->type(), w->name(), w->description(), w->value(), false);
      }
  }

Index: CMakeSetupDialog.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/CMakeSetupDialog.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -C 2 -d -r1.26 -r1.27
*** CMakeSetupDialog.h	14 Apr 2008 20:15:28 -0000	1.26
--- CMakeSetupDialog.h	15 May 2008 23:21:01 -0000	1.27
***************
*** 45,49 ****
    void doConfigure();
    void doGenerate();
-   void doSuppressDev();
    void doInstallForCommandLine();
    void doHelp();
--- 45,48 ----
***************
*** 63,67 ****
    void showProgress(const QString& msg, float percent);
    void setEnabledState(bool);
!   bool promptForGenerator();
    void updateGeneratorLabel(const QString& gen);
    void setExitAfterGenerate(bool);
--- 62,66 ----
    void showProgress(const QString& msg, float percent);
    void setEnabledState(bool);
!   bool setupFirstConfigure();
    void updateGeneratorLabel(const QString& gen);
    void setExitAfterGenerate(bool);
***************
*** 90,94 ****
    bool ExitAfterGenerate;
    bool CacheModified;
-   bool SuppressDevWarnings;
    QAction* ReloadCacheAction;
    QAction* DeleteCacheAction;
--- 89,92 ----

Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/CMakeLists.txt,v
retrieving revision 1.18
retrieving revision 1.19
diff -C 2 -d -r1.18 -r1.19
*** CMakeLists.txt	8 Apr 2008 15:30:47 -0000	1.18
--- CMakeLists.txt	15 May 2008 23:21:01 -0000	1.19
***************
*** 1,4 ****
  PROJECT(QtDialog)
! SET(QT_MIN_VERSION "4.2.0")
  FIND_PACKAGE(Qt4 REQUIRED)
  
--- 1,4 ----
  PROJECT(QtDialog)
! SET(QT_MIN_VERSION "4.3.0")
  FIND_PACKAGE(Qt4 REQUIRED)
  
***************
*** 17,20 ****
--- 17,22 ----
      AddCacheEntry.cxx
      AddCacheEntry.h
+     CMakeFirstConfigure.cxx
+     CMakeFirstConfigure.h
      CMakeSetup.cxx
      CMakeSetupDialog.cxx
***************
*** 24,31 ****
--- 26,36 ----
      QCMakeCacheView.cxx
      QCMakeCacheView.h
+     QCMakeWidgets.cxx
+     QCMakeWidgets.h
      QMacInstallDialog.cxx
      QMacInstallDialog.h
      )
    QT4_WRAP_UI(UI_SRCS 
+     CMakeFirstConfigure.ui
      CMakeSetupDialog.ui
      AddCacheEntry.ui
***************
*** 34,40 ****
--- 39,47 ----
    QT4_WRAP_CPP(MOC_SRCS 
      AddCacheEntry.h
+     CMakeFirstConfigure.h
      CMakeSetupDialog.h
      QCMake.h
      QCMakeCacheView.h
+     QCMakeWidgets.h
      QMacInstallDialog.h
      )

Index: AddCacheEntry.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/AddCacheEntry.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C 2 -d -r1.2 -r1.3
*** AddCacheEntry.h	13 Nov 2007 04:59:25 -0000	1.2
--- AddCacheEntry.h	15 May 2008 23:21:01 -0000	1.3
***************
*** 34,38 ****
    QVariant value() const;
    QString description() const;
!   QCMakeCacheProperty::PropertyType type() const;
  };
  
--- 34,38 ----
    QVariant value() const;
    QString description() const;
!   QCMakeProperty::PropertyType type() const;
  };
  

Index: QCMake.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/QCMake.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -C 2 -d -r1.11 -r1.12
*** QCMake.h	7 Apr 2008 23:19:50 -0000	1.11
--- QCMake.h	15 May 2008 23:21:01 -0000	1.12
***************
*** 32,38 ****
  class cmake;
  
! /// struct to represent cache properties in Qt
  /// Value is of type String or Bool
! struct QCMakeCacheProperty
  {
    enum PropertyType { BOOL, PATH, FILEPATH, STRING };
--- 32,38 ----
  class cmake;
  
! /// struct to represent cmake properties in Qt
  /// Value is of type String or Bool
! struct QCMakeProperty
  {
    enum PropertyType { BOOL, PATH, FILEPATH, STRING };
***************
*** 42,50 ****
    PropertyType Type;
    bool Advanced;
!   bool operator==(const QCMakeCacheProperty& other) const 
      { 
      return this->Key == other.Key;
      }
!   bool operator<(const QCMakeCacheProperty& other) const 
      { 
      return this->Key < other.Key;
--- 42,50 ----
    PropertyType Type;
    bool Advanced;
!   bool operator==(const QCMakeProperty& other) const 
      { 
      return this->Key == other.Key;
      }
!   bool operator<(const QCMakeProperty& other) const 
      { 
      return this->Key < other.Key;
***************
*** 52,59 ****
  };
  
! // make types usable with QVariant
! Q_DECLARE_METATYPE(QCMakeCacheProperty)
! typedef QList<QCMakeCacheProperty> QCMakeCachePropertyList;
! Q_DECLARE_METATYPE(QCMakeCachePropertyList)
  
  /// Qt API for CMake library.
--- 52,61 ----
  };
  
! // list of properties
! typedef QList<QCMakeProperty> QCMakePropertyList;
! 
! // allow QVariant to be a property or list of properties
! Q_DECLARE_METATYPE(QCMakeProperty)
! Q_DECLARE_METATYPE(QCMakePropertyList)
  
  /// Qt API for CMake library.
***************
*** 66,70 ****
    QCMake(QObject* p=0);
    ~QCMake();
-   void SetSuppressDevWarnings(bool value);
  public slots:
    /// load the cache file in a directory
--- 68,71 ----
***************
*** 81,85 ****
    void generate();
    /// set the property values
!   void setProperties(const QCMakeCachePropertyList&);
    /// interrupt the configure or generate process
    void interrupt();
--- 82,86 ----
    void generate();
    /// set the property values
!   void setProperties(const QCMakePropertyList&);
    /// interrupt the configure or generate process
    void interrupt();
***************
*** 90,97 ****
    /// set whether to do debug output
    void setDebugOutput(bool);
  
  public:
    /// get the list of cache properties
!   QCMakeCachePropertyList properties() const;
    /// get the current binary directory
    QString binaryDirectory() const;
--- 91,100 ----
    /// set whether to do debug output
    void setDebugOutput(bool);
+   /// set whether to do suppress dev warnings
+   void setSuppressDevWarnings(bool value);
  
  public:
    /// get the list of cache properties
!   QCMakePropertyList properties() const;
    /// get the current binary directory
    QString binaryDirectory() const;
***************
*** 107,111 ****
  signals:
    /// signal when properties change (during read from disk or configure process)
!   void propertiesChanged(const QCMakeCachePropertyList& vars);
    /// signal when the generator changes
    void generatorChanged(const QString& gen);
--- 110,114 ----
  signals:
    /// signal when properties change (during read from disk or configure process)
!   void propertiesChanged(const QCMakePropertyList& vars);
    /// signal when the generator changes
    void generatorChanged(const QString& gen);

Index: QCMake.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/QCMake.cxx,v
retrieving revision 1.23
retrieving revision 1.24
diff -C 2 -d -r1.23 -r1.24
*** QCMake.cxx	7 Apr 2008 23:19:50 -0000	1.23
--- QCMake.cxx	15 May 2008 23:21:01 -0000	1.24
***************
*** 30,35 ****
  {
    this->SuppressDevWarnings = false;
!   qRegisterMetaType<QCMakeCacheProperty>();
!   qRegisterMetaType<QCMakeCachePropertyList>();
    
    QDir execDir(QCoreApplication::applicationDirPath());
--- 30,35 ----
  {
    this->SuppressDevWarnings = false;
!   qRegisterMetaType<QCMakeProperty>();
!   qRegisterMetaType<QCMakePropertyList>();
    
    QDir execDir(QCoreApplication::applicationDirPath());
***************
*** 112,116 ****
        }
      
!     QCMakeCachePropertyList props = this->properties();
      emit this->propertiesChanged(props);
      cmCacheManager::CacheIterator itm = cachem->NewIterator();
--- 112,116 ----
        }
      
!     QCMakePropertyList props = this->properties();
      emit this->propertiesChanged(props);
      cmCacheManager::CacheIterator itm = cachem->NewIterator();
***************
*** 166,172 ****
  }
    
! void QCMake::setProperties(const QCMakeCachePropertyList& newProps)
  {
!   QCMakeCachePropertyList props = newProps;
  
    QStringList toremove;
--- 166,172 ----
  }
    
! void QCMake::setProperties(const QCMakePropertyList& newProps)
  {
!   QCMakePropertyList props = newProps;
  
    QStringList toremove;
***************
*** 184,188 ****
        }
  
!     QCMakeCacheProperty prop;
      prop.Key = i.GetName();
      int idx = props.indexOf(prop);
--- 184,188 ----
        }
  
!     QCMakeProperty prop;
      prop.Key = i.GetName();
      int idx = props.indexOf(prop);
***************
*** 214,220 ****
    
    // add some new properites
!   foreach(QCMakeCacheProperty s, props)
      {
!     if(s.Type == QCMakeCacheProperty::BOOL)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
--- 214,220 ----
    
    // add some new properites
!   foreach(QCMakeProperty s, props)
      {
!     if(s.Type == QCMakeProperty::BOOL)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
***************
*** 223,227 ****
                              cmCacheManager::BOOL);
        }
!     else if(s.Type == QCMakeCacheProperty::STRING)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
--- 223,227 ----
                              cmCacheManager::BOOL);
        }
!     else if(s.Type == QCMakeProperty::STRING)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
***************
*** 230,234 ****
                              cmCacheManager::STRING);
        }
!     else if(s.Type == QCMakeCacheProperty::PATH)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
--- 230,234 ----
                              cmCacheManager::STRING);
        }
!     else if(s.Type == QCMakeProperty::PATH)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
***************
*** 237,241 ****
                              cmCacheManager::PATH);
        }
!     else if(s.Type == QCMakeCacheProperty::FILEPATH)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
--- 237,241 ----
                              cmCacheManager::PATH);
        }
!     else if(s.Type == QCMakeProperty::FILEPATH)
        {
        this->CMakeInstance->AddCacheEntry(s.Key.toAscii().data(),
***************
*** 249,255 ****
  }
  
! QCMakeCachePropertyList QCMake::properties() const
  {
!   QCMakeCachePropertyList ret;
  
    cmCacheManager *cachem = this->CMakeInstance->GetCacheManager();
--- 249,255 ----
  }
  
! QCMakePropertyList QCMake::properties() const
  {
!   QCMakePropertyList ret;
  
    cmCacheManager *cachem = this->CMakeInstance->GetCacheManager();
***************
*** 265,269 ****
        }
  
!     QCMakeCacheProperty prop;
      prop.Key = i.GetName();
      prop.Help = i.GetProperty("HELPSTRING");
--- 265,269 ----
        }
  
!     QCMakeProperty prop;
      prop.Key = i.GetName();
      prop.Help = i.GetProperty("HELPSTRING");
***************
*** 273,290 ****
      if(i.GetType() == cmCacheManager::BOOL)
        {
!       prop.Type = QCMakeCacheProperty::BOOL;
        prop.Value = cmSystemTools::IsOn(i.GetValue());
        }
      else if(i.GetType() == cmCacheManager::PATH)
        {
!       prop.Type = QCMakeCacheProperty::PATH;
        }
      else if(i.GetType() == cmCacheManager::FILEPATH)
        {
!       prop.Type = QCMakeCacheProperty::FILEPATH;
        }
      else if(i.GetType() == cmCacheManager::STRING)
        {
!       prop.Type = QCMakeCacheProperty::STRING;
        }
  
--- 273,290 ----
      if(i.GetType() == cmCacheManager::BOOL)
        {
!       prop.Type = QCMakeProperty::BOOL;
        prop.Value = cmSystemTools::IsOn(i.GetValue());
        }
      else if(i.GetType() == cmCacheManager::PATH)
        {
!       prop.Type = QCMakeProperty::PATH;
        }
      else if(i.GetType() == cmCacheManager::FILEPATH)
        {
!       prop.Type = QCMakeProperty::FILEPATH;
        }
      else if(i.GetType() == cmCacheManager::STRING)
        {
!       prop.Type = QCMakeProperty::STRING;
        }
  
***************
*** 350,354 ****
    // emit no generator and no properties
    this->setGenerator(QString());
!   QCMakeCachePropertyList props = this->properties();
    emit this->propertiesChanged(props);
  }
--- 350,354 ----
    // emit no generator and no properties
    this->setGenerator(QString());
!   QCMakePropertyList props = this->properties();
    emit this->propertiesChanged(props);
  }
***************
*** 357,361 ****
  {
    // emit that the cache was cleaned out
!   QCMakeCachePropertyList props;
    emit this->propertiesChanged(props);
    // reload
--- 357,361 ----
  {
    // emit that the cache was cleaned out
!   QCMakePropertyList props;
    emit this->propertiesChanged(props);
    // reload
***************
*** 381,385 ****
  
  
! void QCMake::SetSuppressDevWarnings(bool value)
  {
    this->SuppressDevWarnings = value;
--- 381,385 ----
  
  
! void QCMake::setSuppressDevWarnings(bool value)
  {
    this->SuppressDevWarnings = value;

--- NEW FILE: CMakeFirstConfigure.ui ---
<ui version="4.0" >
 <class>CMakeFirstConfigure</class>
 <widget class="QDialog" name="CMakeFirstConfigure" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>609</width>
    <height>547</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>First Configure Setup</string>
  </property>
  <layout class="QGridLayout" >
   <item row="0" column="0" >
    <widget class="QLabel" name="label" >
     <property name="sizePolicy" >
      <sizepolicy vsizetype="Minimum" hsizetype="Preferred" >
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="text" >
      <string>Please select what build system you want CMake to generate files for.  You should select the tool that you will use to build the project.</string>
     </property>
     <property name="wordWrap" >
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="1" column="0" >
    <layout class="QHBoxLayout" >
     <item>
      <widget class="QComboBox" name="generators" />
     </item>
     <item>
      <spacer>
       <property name="orientation" >
        <enum>Qt::Horizontal</enum>
       </property>
       <property name="sizeHint" >
        <size>
         <width>40</width>
         <height>20</height>
        </size>
       </property>
      </spacer>
     </item>
    </layout>
   </item>
   <item row="2" column="0" >
    <layout class="QVBoxLayout" >
     <item>
      <widget class="QRadioButton" name="useDefaults" >
       <property name="text" >
        <string>Use Defaults</string>
       </property>
       <property name="checked" >
        <bool>true</bool>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QRadioButton" name="compilerSetup" >
       <property name="text" >
        <string>Compiler Setup</string>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QRadioButton" name="crossCompilerSetup" >
       <property name="text" >
        <string>Cross Compiler Setup</string>
       </property>
      </widget>
     </item>
    </layout>
   </item>
   <item row="3" column="0" >
    <widget class="Line" name="line" >
     <property name="orientation" >
      <enum>Qt::Horizontal</enum>
     </property>
    </widget>
   </item>
   <item row="4" column="0" >
    <widget class="QStackedWidget" name="stackedWidget" >
     <property name="sizePolicy" >
      <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="currentIndex" >
      <number>2</number>
     </property>
     <widget class="QWidget" name="defaultPage" >
      <layout class="QGridLayout" >
       <property name="leftMargin" >
        <number>0</number>
       </property>
       <property name="topMargin" >
        <number>0</number>
       </property>
       <property name="rightMargin" >
        <number>0</number>
       </property>
       <property name="bottomMargin" >
        <number>0</number>
       </property>
       <item row="0" column="1" >
        <widget class="QLabel" name="label_2" >
         <property name="text" >
          <string>The default compilers will be used.</string>
         </property>
         <property name="alignment" >
          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
         </property>
         <property name="wordWrap" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
       <item row="1" column="1" >
        <spacer>
         <property name="orientation" >
          <enum>Qt::Vertical</enum>
         </property>
         <property name="sizeHint" >
          <size>
           <width>20</width>
           <height>40</height>
          </size>
         </property>
        </spacer>
       </item>
      </layout>
     </widget>
     <widget class="QWidget" name="compilerPage" >
      <layout class="QGridLayout" >
       <item row="0" column="0" >
        <widget class="QGroupBox" name="groupBox_4" >
         <property name="title" >
          <string>Compilers</string>
         </property>
         <layout class="QGridLayout" >
          <item row="0" column="0" >
           <widget class="QLabel" name="label_16" >
            <property name="text" >
             <string>C</string>
            </property>
           </widget>
          </item>
          <item row="0" column="1" >
           <widget class="QCMakeFilePathEditor" name="CCompiler" />
          </item>
          <item row="0" column="2" >
           <widget class="QLabel" name="label_17" >
            <property name="text" >
             <string>C++</string>
            </property>
           </widget>
          </item>
          <item row="0" column="3" >
           <widget class="QCMakeFilePathEditor" name="CXXCompiler" />
          </item>
          <item row="1" column="0" >
           <widget class="QLabel" name="label_18" >
            <property name="text" >
             <string>Fortran</string>
            </property>
           </widget>
          </item>
          <item row="1" column="1" >
           <widget class="QCMakeFilePathEditor" name="FortranCompiler" />
          </item>
         </layout>
        </widget>
       </item>
       <item row="1" column="0" >
        <spacer>
         <property name="orientation" >
          <enum>Qt::Vertical</enum>
         </property>
         <property name="sizeHint" >
          <size>
           <width>566</width>
           <height>71</height>
          </size>
         </property>
        </spacer>
       </item>
      </layout>
     </widget>
     <widget class="QWidget" name="crossCompilerPage" >
      <layout class="QGridLayout" >
       <property name="leftMargin" >
        <number>0</number>
       </property>
       <property name="topMargin" >
        <number>0</number>
       </property>
       <property name="rightMargin" >
        <number>0</number>
       </property>
       <property name="bottomMargin" >
        <number>0</number>
       </property>
       <item row="1" column="0" >
        <widget class="QStackedWidget" name="toolChainStack" >
         <property name="sizePolicy" >
          <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <property name="currentIndex" >
          <number>1</number>
         </property>
         <widget class="QWidget" name="page" >
          <layout class="QGridLayout" >
           <property name="leftMargin" >
            <number>9</number>
           </property>
           <property name="topMargin" >
            <number>9</number>
           </property>
           <property name="rightMargin" >
            <number>9</number>
           </property>
           <property name="bottomMargin" >
            <number>9</number>
           </property>
           <item row="0" column="1" >
            <widget class="QCMakeFilePathEditor" name="toolChainFile" />
           </item>
           <item row="1" column="1" >
            <spacer>
             <property name="orientation" >
              <enum>Qt::Vertical</enum>
             </property>
             <property name="sizeHint" >
              <size>
               <width>20</width>
               <height>40</height>
              </size>
             </property>
            </spacer>
           </item>
           <item row="0" column="0" >
            <widget class="QLabel" name="label_5" >
             <property name="text" >
              <string>Tool Chain File</string>
             </property>
             <property name="wordWrap" >
              <bool>true</bool>
             </property>
            </widget>
           </item>
          </layout>
         </widget>
         <widget class="QWidget" name="page_2" >
          <layout class="QGridLayout" >
           <item row="0" column="0" >
            <widget class="QGroupBox" name="groupBox" >
             <property name="sizePolicy" >
              <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="title" >
              <string>System</string>
             </property>
             <layout class="QGridLayout" >
              <item row="0" column="0" >
               <layout class="QHBoxLayout" >
                <item>
                 <widget class="QLabel" name="label_6" >
                  <property name="sizePolicy" >
                   <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                    <horstretch>0</horstretch>
                    <verstretch>0</verstretch>
                   </sizepolicy>
                  </property>
                  <property name="text" >
                   <string>Name</string>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QLineEdit" name="systemName" />
                </item>
                <item>
                 <widget class="QLabel" name="label_10" >
                  <property name="sizePolicy" >
                   <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                    <horstretch>0</horstretch>
                    <verstretch>0</verstretch>
                   </sizepolicy>
                  </property>
                  <property name="text" >
                   <string>Version</string>
                  </property>
                  <property name="wordWrap" >
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QLineEdit" name="systemVersion" />
                </item>
                <item>
                 <widget class="QLabel" name="label_11" >
                  <property name="sizePolicy" >
                   <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                    <horstretch>0</horstretch>
                    <verstretch>0</verstretch>
                   </sizepolicy>
                  </property>
                  <property name="text" >
                   <string>Processor</string>
                  </property>
                  <property name="wordWrap" >
                   <bool>true</bool>
                  </property>
                 </widget>
                </item>
                <item>
                 <widget class="QLineEdit" name="systemProcessor" />
                </item>
               </layout>
              </item>
             </layout>
            </widget>
           </item>
           <item row="1" column="0" >
            <widget class="QGroupBox" name="groupBox_3" >
             <property name="sizePolicy" >
              <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="title" >
              <string>Compilers</string>
             </property>
             <layout class="QGridLayout" >
              <item row="0" column="0" >
               <widget class="QLabel" name="label_8" >
                <property name="text" >
                 <string>C</string>
                </property>
               </widget>
              </item>
              <item row="0" column="1" >
               <widget class="QCMakeFilePathEditor" name="crossCCompiler" />
              </item>
              <item row="0" column="2" >
               <widget class="QLabel" name="label_7" >
                <property name="text" >
                 <string>C++</string>
                </property>
               </widget>
              </item>
              <item row="0" column="3" >
               <widget class="QCMakeFilePathEditor" name="crossCXXCompiler" />
              </item>
              <item row="1" column="0" >
               <widget class="QLabel" name="label_15" >
                <property name="text" >
                 <string>Fortran</string>
                </property>
               </widget>
              </item>
              <item row="1" column="1" >
               <widget class="QCMakeFilePathEditor" name="crossFortranCompiler" />
              </item>
             </layout>
            </widget>
           </item>
           <item row="2" column="0" >
            <widget class="QGroupBox" name="groupBox_2" >
             <property name="sizePolicy" >
              <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="title" >
              <string>Find Program/Library/Include</string>
             </property>
             <layout class="QGridLayout" >
              <item row="0" column="0" >
               <widget class="QLabel" name="label_9" >
                <property name="sizePolicy" >
                 <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
                </property>
                <property name="text" >
                 <string>Root</string>
                </property>
                <property name="wordWrap" >
                 <bool>true</bool>
                </property>
               </widget>
              </item>
              <item row="0" column="1" >
               <widget class="QCMakePathEditor" name="crossFindRoot" />
              </item>
              <item row="0" column="2" >
               <widget class="QLabel" name="label_12" >
                <property name="sizePolicy" >
                 <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
                </property>
                <property name="text" >
                 <string>Program Mode</string>
                </property>
               </widget>
              </item>
              <item row="0" column="3" >
               <widget class="QComboBox" name="crossProgramMode" >
                <item>
                 <property name="text" >
                  <string>Find from Root then system</string>
                 </property>
                </item>
                <item>
                 <property name="text" >
                  <string>Only find from Root</string>
                 </property>
                </item>
                <item>
                 <property name="text" >
                  <string>Don't find from Root</string>
                 </property>
                </item>
               </widget>
              </item>
              <item row="1" column="0" >
               <widget class="QLabel" name="label_13" >
                <property name="sizePolicy" >
                 <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
                </property>
                <property name="text" >
                 <string>Library Mode</string>
                </property>
               </widget>
              </item>
              <item row="1" column="1" >
               <widget class="QComboBox" name="crossLibraryMode" >
                <item>
                 <property name="text" >
                  <string>Find from Root then system</string>
                 </property>
                </item>
                <item>
                 <property name="text" >
                  <string>Only find from Root</string>
                 </property>
                </item>
                <item>
                 <property name="text" >
                  <string>Don't find from Root</string>
                 </property>
                </item>
               </widget>
              </item>
              <item row="1" column="2" >
               <widget class="QLabel" name="label_14" >
                <property name="sizePolicy" >
                 <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
                </property>
                <property name="text" >
                 <string>Include Mode</string>
                </property>
               </widget>
              </item>
              <item row="1" column="3" >
               <widget class="QComboBox" name="crossIncludeMode" >
                <item>
                 <property name="text" >
                  <string>Find from Root then system</string>
                 </property>
                </item>
                <item>
                 <property name="text" >
                  <string>Only find from Root</string>
                 </property>
                </item>
                <item>
                 <property name="text" >
                  <string>Don't find from Root</string>
                 </property>
                </item>
               </widget>
              </item>
             </layout>
            </widget>
           </item>
          </layout>
         </widget>
        </widget>
       </item>
       <item row="0" column="0" >
        <widget class="QCheckBox" name="useToolChainFile" >
         <property name="text" >
          <string>Use ToolChain File</string>
         </property>
         <property name="checked" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
      </layout>
     </widget>
    </widget>
   </item>
   <item row="6" column="0" >
    <widget class="QDialogButtonBox" name="buttonBox" >
     <property name="orientation" >
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons" >
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
   <item row="5" column="0" >
    <spacer>
     <property name="orientation" >
      <enum>Qt::Vertical</enum>
     </property>
     <property name="sizeType" >
      <enum>QSizePolicy::Expanding</enum>
     </property>
     <property name="sizeHint" >
      <size>
       <width>0</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
  </layout>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QCMakeFilePathEditor</class>
   <extends>QLineEdit</extends>
   <header>QCMakeWidgets.h</header>
  </customwidget>
  <customwidget>
   <class>QCMakePathEditor</class>
   <extends>QLineEdit</extends>
   <header>QCMakeWidgets.h</header>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>CMakeFirstConfigure</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>227</x>
     <y>284</y>
    </hint>
    <hint type="destinationlabel" >
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>CMakeFirstConfigure</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel" >
     <x>295</x>
     <y>290</y>
    </hint>
    <hint type="destinationlabel" >
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>



More information about the Cmake-commits mailing list