Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 35.58 KB | None | 0 0
  1. commit 0ec7b45163e4655a85f8226a9abe2bf822fbd80a
  2. Author: dt <qtc-committer@nokia.com>
  3. Date:   Wed Oct 27 16:27:22 2010 +0200
  4.  
  5.     Progress so far
  6.    
  7.     ***
  8.     Reviewed-By: pending
  9.  
  10. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
  11. index d1e9d5d..8d8aa12 100644
  12. --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
  13. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
  14. @@ -67,9 +67,12 @@ MaemoDeployables::~MaemoDeployables() {}
  15.  
  16.  void MaemoDeployables::init()
  17.  {
  18. -    connect(qt4BuildConfiguration()->qt4Target()->qt4Project(),
  19. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  20. -        m_updateTimer, SLOT(start()));
  21. +    Qt4Project *pro = qt4BuildConfiguration()->qt4Target()->qt4Project();
  22. +    connect(pro,  SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)),
  23. +            m_updateTimer, SLOT(start()));
  24. +
  25. +    // TODO do we want to disable the view
  26. +
  27.      createModels();
  28.  }
  29.  
  30. @@ -88,9 +91,9 @@ void MaemoDeployables::createModels()
  31.      m_proFileOption->properties
  32.          = qt4BuildConfiguration()->qtVersion()->versionInfo();
  33.      m_proFileOption->target_mode = ProFileOption::TARG_UNIX_MODE;
  34. -    disconnect(qt4BuildConfiguration()->qt4Target()->qt4Project(),
  35. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  36. -        m_updateTimer, SLOT(start()));
  37. +    Qt4Project *pro = qt4BuildConfiguration()->qt4Target()->qt4Project();
  38. +    disconnect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)),
  39. +               m_updateTimer, SLOT(start()));
  40.      beginResetModel();
  41.      qDeleteAll(m_listModels);
  42.      m_listModels.clear();
  43. @@ -120,9 +123,8 @@ void MaemoDeployables::createModels()
  44.      }
  45.  
  46.      endResetModel();
  47. -    connect(qt4BuildConfiguration()->qt4Target()->qt4Project(),
  48. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  49. -        m_updateTimer, SLOT(start()));
  50. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)),
  51. +            m_updateTimer, SLOT(start()));
  52.  }
  53.  
  54.  void MaemoDeployables::createModels(const Qt4ProFileNode *proFileNode)
  55. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
  56. index fcb737c..1f69c8e 100644
  57. --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
  58. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
  59. @@ -67,6 +67,7 @@ MaemoRunConfiguration::MaemoRunConfiguration(Qt4Target *parent,
  60.      , m_proFilePath(proFilePath)
  61.      , m_useRemoteGdb(DefaultUseRemoteGdbValue)
  62.      , m_baseEnvironmentBase(SystemEnvironmentBase)
  63. +    , m_parseSuccess(true)
  64.  {
  65.      init();
  66.  }
  67. @@ -81,6 +82,7 @@ MaemoRunConfiguration::MaemoRunConfiguration(Qt4Target *parent,
  68.      , m_baseEnvironmentBase(source->m_baseEnvironmentBase)
  69.      , m_systemEnvironment(source->m_systemEnvironment)
  70.      , m_userEnvironmentChanges(source->m_userEnvironmentChanges)
  71. +    , m_parseSuccess(source->m_parseSuccess)
  72.  {
  73.      init();
  74.  }
  75. @@ -97,9 +99,11 @@ void MaemoRunConfiguration::init()
  76.          this, SLOT(handleDeployConfigChanged()));
  77.      handleDeployConfigChanged();
  78.  
  79. -    connect(qt4Target()->qt4Project(),
  80. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  81. -        this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  82. +    Qt4Project *pro = qt4Target()->qt4Project();
  83. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)),
  84. +            this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)));
  85. +    connect(pro, SIGNAL(profFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  86. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  87.  }
  88.  
  89.  MaemoRunConfiguration::~MaemoRunConfiguration()
  90. @@ -118,6 +122,8 @@ Qt4BuildConfiguration *MaemoRunConfiguration::activeQt4BuildConfiguration() cons
  91.  
  92.  bool MaemoRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *config) const
  93.  {
  94. +    if (!m_parseSuccess)
  95. +        return false;
  96.      Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration*>(config);
  97.      QTC_ASSERT(qt4bc, return false);
  98.      ToolChain::ToolChainType type = qt4bc->toolChainType();
  99. @@ -134,10 +140,30 @@ ProjectExplorer::OutputFormatter *MaemoRunConfiguration::createOutputFormatter()
  100.      return new QtOutputFormatter(qt4Target()->qt4Project());
  101.  }
  102.  
  103. -void MaemoRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  104. +void MaemoRunConfiguration::handleParseState(bool success)
  105. +{
  106. +    bool enabled = isEnabled();
  107. +    m_parseSuccess = success;
  108. +    if (enabled != isEnabled()) {
  109. +        qDebug()<<"Emitting isEnabledChanged()"<<!enabled;
  110. +        emit isEnabledChanged(!enabled);
  111. +    }
  112. +}
  113. +
  114. +void MaemoRunConfiguration::proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  115.  {
  116. -    if (m_proFilePath == pro->path())
  117. +    if (m_proFilePath != pro->path())
  118. +        return;
  119. +    qDebug()<<"proFileInvalidated";
  120. +    handleParseState(false);
  121. +}
  122. +
  123. +void MaemoRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success)
  124. +{
  125. +    if (m_proFilePath == pro->path()) {
  126. +        handleParseState(success);
  127.          emit targetInformationChanged();
  128. +    }
  129.  }
  130.  
  131.  QVariantMap MaemoRunConfiguration::toMap() const
  132. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
  133. index 5ca8db2..bb0be97 100644
  134. --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
  135. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
  136. @@ -76,6 +76,7 @@ public:
  137.      MaemoRunConfiguration(Qt4Target *parent, const QString &proFilePath);
  138.      virtual ~MaemoRunConfiguration();
  139.  
  140. +    using ProjectExplorer::RunConfiguration::isEnabled;
  141.      bool isEnabled(ProjectExplorer::BuildConfiguration *config) const;
  142.      QWidget *createConfigurationWidget();
  143.      ProjectExplorer::OutputFormatter *createOutputFormatter() const;
  144. @@ -135,14 +136,15 @@ protected:
  145.      QString defaultDisplayName();
  146.  
  147.  private slots:
  148. -    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  149. +    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success);
  150. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  151.      void updateDeviceConfigurations();
  152.      void handleDeployConfigChanged();
  153.  
  154.  private:
  155.      void init();
  156. +    void handleParseState(bool success);
  157.  
  158. -private:
  159.      QString m_proFilePath;
  160.      mutable QString m_gdbPath;
  161.      MaemoRemoteMountsModel *m_remoteMounts;
  162. @@ -152,6 +154,7 @@ private:
  163.      BaseEnvironmentBase m_baseEnvironmentBase;
  164.      Utils::Environment m_systemEnvironment;
  165.      QList<Utils::EnvironmentItem> m_userEnvironmentChanges;
  166. +    bool m_parseSuccess;
  167.  };
  168.  
  169.      } // namespace Internal
  170. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp
  171. index 72ccb2a..1be512c 100644
  172. --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp
  173. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp
  174. @@ -96,9 +96,18 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget(
  175.      connect(m_runConfiguration->qt4Target(),
  176.          SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
  177.          this, SLOT(handleBuildConfigChanged()));
  178. +
  179. +    connect(m_runConfiguration, SIGNAL(isEnabledChanged(bool)),
  180. +            this, SLOT(runConfigurationEnabledChange(bool)));
  181. +
  182.      handleBuildConfigChanged();
  183.  }
  184.  
  185. +void MaemoRunConfigurationWidget::runConfigurationEnabledChange(bool enabled)
  186. +{
  187. +    setEnabled(enabled);
  188. +}
  189. +
  190.  void MaemoRunConfigurationWidget::addGenericWidgets(QVBoxLayout *mainLayout)
  191.  {
  192.      QFormLayout *formLayout = new QFormLayout;
  193. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h
  194. index e97c107..56954ae 100644
  195. --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h
  196. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h
  197. @@ -71,9 +71,10 @@ class MaemoRunConfigurationWidget : public QWidget
  198.      Q_OBJECT
  199.  public:
  200.      explicit MaemoRunConfigurationWidget(MaemoRunConfiguration *runConfiguration,
  201. -        QWidget *parent = 0);
  202. +                                         QWidget *parent = 0);
  203.  
  204.  private slots:
  205. +    void runConfigurationEnabledChange(bool enabled);
  206.      void argumentsEdited(const QString &args);
  207.      void showSettingsDialog(const QString &link);
  208.      void updateTargetInformation();
  209. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
  210. index cd4a04a..61181c3 100644
  211. --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
  212. +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
  213. @@ -110,6 +110,10 @@ S60DeployConfiguration::S60DeployConfiguration(Target *target, S60DeployConfigur
  214.  void S60DeployConfiguration::ctor()
  215.  {
  216.      setDefaultDisplayName(defaultDisplayName());
  217. +    // TODO disable S60 Deploy Configuration while parsing
  218. +    // requires keeping track of how many Qt4ProFileNodes changed
  219. +//    connect(qt4Target()->qt4Project(), SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  220. +//            this, SLOT(targetInformationInvalidated()));
  221.      connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  222.              this, SIGNAL(targetInformationChanged()));
  223.      connect(qt4Target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
  224. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
  225. index 4c4b7ba..2efb0df 100644
  226. --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
  227. +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
  228. @@ -109,7 +109,8 @@ QString pathToId(const QString &path)
  229.  
  230.  S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *parent, const QString &proFilePath) :
  231.      RunConfiguration(parent,  QLatin1String(S60_DEVICE_RC_ID)),
  232. -    m_proFilePath(proFilePath)
  233. +    m_proFilePath(proFilePath),
  234. +    m_parseSuccess(true)
  235.  {
  236.      ctor();
  237.  }
  238. @@ -117,7 +118,8 @@ S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *parent, const QStri
  239.  S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *target, S60DeviceRunConfiguration *source) :
  240.      RunConfiguration(target, source),
  241.      m_proFilePath(source->m_proFilePath),
  242. -    m_commandLineArguments(source->m_commandLineArguments)
  243. +    m_commandLineArguments(source->m_commandLineArguments),
  244. +    m_parseSuccess(source->m_parseSuccess)
  245.  {
  246.      ctor();
  247.  }
  248. @@ -130,12 +132,38 @@ void S60DeviceRunConfiguration::ctor()
  249.      else
  250.          //: S60 device runconfiguration default display name (no profile set)
  251.          setDefaultDisplayName(tr("Run on Symbian device"));
  252. +
  253. +    Qt4Project *pro = qt4Target()->qt4Project();
  254. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)),
  255. +            this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)));
  256. +    connect(pro, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  257. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  258. +
  259. +}
  260. +
  261. +void S60DeviceRunConfiguration::handleParserState(bool success)
  262. +{
  263. +    bool enabled = isEnabled();
  264. +    m_parseSuccess = success;
  265. +    if (enabled != isEnabled()) {
  266. +        qDebug()<<"Emitting isEnabledChanged()"<<!enabled;
  267. +        emit isEnabledChanged(!enabled);
  268. +    }
  269.  }
  270.  
  271. -void S60DeviceRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  272. +void S60DeviceRunConfiguration::proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  273.  {
  274. -    if (m_proFilePath == pro->path())
  275. -        emit targetInformationChanged();
  276. +    if (m_proFilePath != pro->path())
  277. +        return;
  278. +    handleParserState(false);
  279. +}
  280. +
  281. +void S60DeviceRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success)
  282. +{
  283. +    if (m_proFilePath != pro->path())
  284. +        return;
  285. +    handleParserState(success);
  286. +    emit targetInformationChanged();
  287.  }
  288.  
  289.  S60DeviceRunConfiguration::~S60DeviceRunConfiguration()
  290. @@ -164,6 +192,8 @@ ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainTy
  291.  
  292.  bool S60DeviceRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
  293.  {
  294. +    if (!m_parseSuccess)
  295. +        return false;
  296.      const Qt4BuildConfiguration *qt4bc = static_cast<const Qt4BuildConfiguration *>(configuration);
  297.      switch (qt4bc->toolChainType()) {
  298.      case ToolChain::GCCE:
  299. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
  300. index 8ed9ed5..074f7a2 100644
  301. --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
  302. +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
  303. @@ -75,6 +75,7 @@ public:
  304.      Qt4Target *qt4Target() const;
  305.      const QtVersion *qtVersion() const;
  306.  
  307. +    using ProjectExplorer::RunConfiguration::isEnabled;
  308.      bool isEnabled(ProjectExplorer::BuildConfiguration *configuration) const;
  309.      QWidget *createConfigurationWidget();
  310.  
  311. @@ -97,7 +98,6 @@ public:
  312.  
  313.      QVariantMap toMap() const;
  314.  
  315. -    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  316.  
  317.  signals:
  318.      void targetInformationChanged();
  319. @@ -106,13 +106,18 @@ protected:
  320.      S60DeviceRunConfiguration(ProjectExplorer::Target *parent, S60DeviceRunConfiguration *source);
  321.      QString defaultDisplayName() const;
  322.      virtual bool fromMap(const QVariantMap &map);
  323. +private slots:
  324. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  325. +    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success);
  326.  
  327.  private:
  328.      ProjectExplorer::ToolChain::ToolChainType toolChainType(ProjectExplorer::BuildConfiguration *configuration) const;
  329.      void ctor();
  330. +    void handleParserState(bool sucess);
  331.  
  332.      QString m_proFilePath;
  333.      QStringList m_commandLineArguments;
  334. +    bool m_parseSuccess;
  335.  };
  336.  
  337.  class S60DeviceRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory
  338. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp
  339. index cefc6aa..2273d81 100644
  340. --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp
  341. +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp
  342. @@ -73,6 +73,9 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(
  343.  
  344.      connect(m_argumentsLineEdit, SIGNAL(textEdited(QString)),
  345.              this, SLOT(argumentsEdited(QString)));
  346. +
  347. +    connect(m_runConfiguration, SIGNAL(isEnabledChanged(bool)),
  348. +            this, SLOT(runConfigurationEnabledChange(bool)));
  349.  }
  350.  
  351.  void S60DeviceRunConfigurationWidget::argumentsEdited(const QString &text)
  352. @@ -86,5 +89,10 @@ void S60DeviceRunConfigurationWidget::argumentsEdited(const QString &text)
  353.      }
  354.  }
  355.  
  356. +void S60DeviceRunConfigurationWidget::runConfigurationEnabledChange(bool enabled)
  357. +{
  358. +    setEnabled(enabled);
  359. +}
  360. +
  361.  } // namespace Internal
  362.  } // namespace Qt4ProjectManager
  363. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.h
  364. index bd640fc..02ca1b1 100644
  365. --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.h
  366. +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.h
  367. @@ -50,10 +50,10 @@ class S60DeviceRunConfigurationWidget : public QWidget
  368.      Q_OBJECT
  369.  public:
  370.      explicit S60DeviceRunConfigurationWidget(S60DeviceRunConfiguration *runConfiguration,
  371. -                                      QWidget *parent = 0);
  372. -
  373. +                                             QWidget *parent = 0);
  374.  private slots:
  375.      void argumentsEdited(const QString &text);
  376. +    void runConfigurationEnabledChange(bool enabled);
  377.  
  378.  private:
  379.      S60DeviceRunConfiguration *m_runConfiguration;
  380. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
  381. index 3ffa86e..0ba234b 100644
  382. --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
  383. +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
  384. @@ -80,14 +80,16 @@ QString pathToId(const QString &path)
  385.  
  386.  S60EmulatorRunConfiguration::S60EmulatorRunConfiguration(Target *parent, const QString &proFilePath) :
  387.      RunConfiguration(parent, QLatin1String(S60_EMULATOR_RC_ID)),
  388. -    m_proFilePath(proFilePath)
  389. +    m_proFilePath(proFilePath),
  390. +    m_parseSuccess(true)
  391.  {
  392.      ctor();
  393.  }
  394.  
  395.  S60EmulatorRunConfiguration::S60EmulatorRunConfiguration(Target *parent, S60EmulatorRunConfiguration *source) :
  396.      RunConfiguration(parent, source),
  397. -    m_proFilePath(source->m_proFilePath)
  398. +    m_proFilePath(source->m_proFilePath),
  399. +    m_parseSuccess(source->m_parseSuccess)
  400.  {
  401.      ctor();
  402.  }
  403. @@ -100,8 +102,11 @@ void S60EmulatorRunConfiguration::ctor()
  404.      else
  405.          //: S60 emulator run configuration default display name (no pro-file name)
  406.          setDefaultDisplayName(tr("Run on Symbian Emulator"));
  407. -    connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  408. -            this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  409. +    Qt4Project *pro = qt4Target()->qt4Project();
  410. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)),
  411. +            this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*, bool)));
  412. +    connect(pro, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  413. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  414.  }
  415.  
  416.  
  417. @@ -109,10 +114,29 @@ S60EmulatorRunConfiguration::~S60EmulatorRunConfiguration()
  418.  {
  419.  }
  420.  
  421. -void S60EmulatorRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  422. +void S60EmulatorRunConfiguration::handleParserState(bool success)
  423.  {
  424. -    if (m_proFilePath == pro->path())
  425. -        emit targetInformationChanged();
  426. +    bool enabled = isEnabled();
  427. +    m_parseSuccess = success;
  428. +    if (enabled != isEnabled()) {
  429. +        qDebug()<<"Emitting isEnabledChanged()"<<!enabled;
  430. +        emit isEnabledChanged(!enabled);
  431. +    }
  432. +}
  433. +
  434. +void S60EmulatorRunConfiguration::proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  435. +{
  436. +    if (m_proFilePath != pro->path())
  437. +        return;
  438. +    handleParserState(false);
  439. +}
  440. +
  441. +void S60EmulatorRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success)
  442. +{
  443. +    if (m_proFilePath != pro->path())
  444. +        return;
  445. +    handleParserState(success);
  446. +    emit targetInformationChanged();
  447.  }
  448.  
  449.  Qt4Target *S60EmulatorRunConfiguration::qt4Target() const
  450. @@ -122,6 +146,8 @@ Qt4Target *S60EmulatorRunConfiguration::qt4Target() const
  451.  
  452.  bool S60EmulatorRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
  453.  {
  454. +    if (!m_parseSuccess)
  455. +        return false;
  456.      Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration *>(configuration);
  457.      QTC_ASSERT(qt4bc, return false);
  458.      ToolChain::ToolChainType type = qt4bc->toolChainType();
  459. @@ -203,6 +229,9 @@ S60EmulatorRunConfigurationWidget::S60EmulatorRunConfigurationWidget(S60Emulator
  460.  
  461.      connect(m_runConfiguration, SIGNAL(targetInformationChanged()),
  462.              this, SLOT(updateTargetInformation()));
  463. +
  464. +    connect(m_runConfiguration, SIGNAL(isEnabledChanged(bool)),
  465. +            this, SLOT(runConfigurationEnabledChange(bool)));
  466.  }
  467.  
  468.  void S60EmulatorRunConfigurationWidget::updateTargetInformation()
  469. @@ -210,6 +239,11 @@ void S60EmulatorRunConfigurationWidget::updateTargetInformation()
  470.      m_executableLabel->setText(m_runConfiguration->executable());
  471.  }
  472.  
  473. +void S60EmulatorRunConfigurationWidget::runConfigurationEnabledChange(bool enabled)
  474. +{
  475. +    setEnabled(enabled);
  476. +}
  477. +
  478.  // ======== S60EmulatorRunConfigurationFactory
  479.  
  480.  S60EmulatorRunConfigurationFactory::S60EmulatorRunConfigurationFactory(QObject *parent)
  481. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h
  482. index 1f272a2..cf2921e 100644
  483. --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h
  484. +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h
  485. @@ -64,6 +64,7 @@ public:
  486.  
  487.      Qt4Target *qt4Target() const;
  488.  
  489. +    using ProjectExplorer::RunConfiguration::isEnabled;
  490.      bool isEnabled(ProjectExplorer::BuildConfiguration *configuration) const;
  491.      QWidget *createConfigurationWidget();
  492.  
  493. @@ -77,7 +78,8 @@ signals:
  494.      void targetInformationChanged();
  495.  
  496.  private slots:
  497. -    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  498. +    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success);
  499. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  500.  
  501.  protected:
  502.      S60EmulatorRunConfiguration(ProjectExplorer::Target *parent, S60EmulatorRunConfiguration *source);
  503. @@ -85,9 +87,11 @@ protected:
  504.  
  505.  private:
  506.      void ctor();
  507. +    void handleParserState(bool sucess);
  508.      void updateTarget();
  509.  
  510.      QString m_proFilePath;
  511. +    bool m_parseSuccess;
  512.  };
  513.  
  514.  class S60EmulatorRunConfigurationWidget : public QWidget
  515. @@ -99,6 +103,7 @@ public:
  516.  
  517.  private slots:
  518.      void updateTargetInformation();
  519. +    void runConfigurationEnabledChange(bool enabled);
  520.  
  521.  private:
  522.      S60EmulatorRunConfiguration *m_runConfiguration;
  523. diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
  524. index a2189b4..64310e1 100644
  525. --- a/src/plugins/qt4projectmanager/qt4nodes.cpp
  526. +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
  527. @@ -1243,6 +1243,7 @@ Qt4ProFileNode::Qt4ProFileNode(Qt4Project *project,
  528.                                 QObject *parent)
  529.          : Qt4PriFileNode(project, this, filePath),
  530.            m_projectType(InvalidProject),
  531. +          m_validParse(false),
  532.            m_readerExact(0),
  533.            m_readerCumulative(0)
  534.  {
  535. @@ -1307,8 +1308,25 @@ QStringList Qt4ProFileNode::variableValue(const Qt4Variable var) const
  536.      return m_varValues.value(var);
  537.  }
  538.  
  539. +void Qt4ProFileNode::emitProFileInvalidated()
  540. +{
  541. +    foreach (NodesWatcher *watcher, watchers())
  542. +        if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  543. +            emit qt4Watcher->proFileInvalidated(this);
  544. +
  545. +    foreach (ProjectNode *subNode, subProjectNodes()) {
  546. +        if (Qt4ProFileNode *node = qobject_cast<Qt4ProFileNode *>(subNode)) {
  547. +            node->emitProFileInvalidated();
  548. +        }
  549. +    }
  550. +}
  551. +
  552.  void Qt4ProFileNode::scheduleUpdate()
  553.  {
  554. +    if (m_validParse) {
  555. +        m_validParse = false;
  556. +        emitProFileInvalidated();
  557. +    }
  558.      m_project->scheduleAsyncUpdate(this);
  559.  }
  560.  
  561. @@ -1323,6 +1341,13 @@ void Qt4ProFileNode::asyncUpdate()
  562.  
  563.  void Qt4ProFileNode::update()
  564.  {
  565. +    if (m_validParse) {
  566. +        m_validParse = false;
  567. +        foreach (NodesWatcher *watcher, watchers())
  568. +            if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  569. +                emit qt4Watcher->proFileInvalidated(this);
  570. +    }
  571. +
  572.      setupReader();
  573.      bool parserError = evaluate();
  574.      applyEvaluate(!parserError, false);
  575. @@ -1405,6 +1430,9 @@ void Qt4ProFileNode::applyEvaluate(bool parseResult, bool async)
  576.              m_project->proFileParseError(tr("Error while parsing file %1. Giving up.").arg(m_projectFilePath));
  577.              invalidate();
  578.          }
  579. +        foreach (NodesWatcher *watcher, watchers())
  580. +            if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  581. +                emit qt4Watcher->proFileUpdated(this, false);
  582.          return;
  583.      }
  584.  
  585. @@ -1632,9 +1660,11 @@ void Qt4ProFileNode::applyEvaluate(bool parseResult, bool async)
  586.      createUiCodeModelSupport();
  587.      updateUiFiles();
  588.  
  589. +    m_validParse = true;
  590. +
  591.      foreach (NodesWatcher *watcher, watchers())
  592.          if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  593. -            emit qt4Watcher->proFileUpdated(this);
  594. +            emit qt4Watcher->proFileUpdated(this, parseResult);
  595.  
  596.      m_project->destroyProFileReader(m_readerExact);
  597.      if (m_readerCumulative)
  598. diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h
  599. index a616f55..86ad077 100644
  600. --- a/src/plugins/qt4projectmanager/qt4nodes.h
  601. +++ b/src/plugins/qt4projectmanager/qt4nodes.h
  602. @@ -284,6 +284,7 @@ public:
  603.      void update();
  604.      void scheduleUpdate();
  605.  
  606. +    void emitProFileInvalidated();
  607.  public slots:
  608.      void asyncUpdate();
  609.  
  610. @@ -319,6 +320,8 @@ private:
  611.      TargetInformation m_qt4targetInformation;
  612.      friend class Qt4NodeHierarchy;
  613.  
  614. +    bool m_validParse;
  615. +
  616.      // Async stuff
  617.      QFutureWatcher<bool> m_parseFutureWatcher;
  618.      ProFileReader *m_readerExact;
  619. @@ -341,7 +344,8 @@ signals:
  620.                            const QHash<Qt4Variable, QStringList> &oldValues,
  621.                            const QHash<Qt4Variable, QStringList> &newValues);
  622.  
  623. -    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *projectNode);
  624. +    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *projectNode, bool success);
  625. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *projectNode);
  626.  
  627.  private:
  628.      // let them emit signals
  629. diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
  630. index dff2b74..d06fae1 100644
  631. --- a/src/plugins/qt4projectmanager/qt4project.cpp
  632. +++ b/src/plugins/qt4projectmanager/qt4project.cpp
  633. @@ -337,8 +337,11 @@ bool Qt4Project::fromMap(const QVariantMap &map)
  634.      connect(QtVersionManager::instance(), SIGNAL(qtVersionsChanged(QList<int>)),
  635.              this, SLOT(qtVersionsChanged()));
  636.  
  637. -    connect(m_nodesWatcher, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  638. -            this, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  639. +    connect(m_nodesWatcher, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)),
  640. +            this, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *, bool)));
  641. +
  642. +    connect(m_nodesWatcher, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  643. +            this, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  644.  
  645.      connect(this, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
  646.              this, SLOT(activeTargetWasChanged()));
  647. @@ -618,6 +621,7 @@ void Qt4Project::update()
  648.      if (debug)
  649.          qDebug()<<"Doing sync update";
  650.      m_rootProjectNode->update();
  651. +
  652.      if (debug)
  653.          qDebug()<<"State is now Base";
  654.      m_asyncUpdateState = Base;
  655. @@ -627,6 +631,7 @@ void Qt4Project::scheduleAsyncUpdate(Qt4ProFileNode *node)
  656.  {
  657.      if (m_asyncUpdateState == ShuttingDown)
  658.          return;
  659. +
  660.      if (debug)
  661.          qDebug()<<"schduleAsyncUpdate (node)";
  662.      Q_ASSERT(m_asyncUpdateState != NoState);
  663. @@ -695,6 +700,7 @@ void Qt4Project::scheduleAsyncUpdate()
  664.          qDebug()<<"scheduleAsyncUpdate";
  665.      if (m_asyncUpdateState == ShuttingDown)
  666.          return;
  667. +
  668.      Q_ASSERT(m_asyncUpdateState != NoState);
  669.      if (m_cancelEvaluate) { // we are in progress of canceling
  670.                              // and will start the evaluation after that
  671. @@ -707,12 +713,14 @@ void Qt4Project::scheduleAsyncUpdate()
  672.              qDebug()<<"  update in progress, canceling and setting state to full update pending";
  673.          m_cancelEvaluate = true;
  674.          m_asyncUpdateState = AsyncFullUpdatePending;
  675. +        m_rootProjectNode->emitProFileInvalidated();
  676.          return;
  677.      }
  678.  
  679.      if (debug)
  680.          qDebug()<<"  starting timer for full update, setting state to full update pending";
  681.      m_partialEvaluate.clear();
  682. +    m_rootProjectNode->emitProFileInvalidated();
  683.      m_asyncUpdateState = AsyncFullUpdatePending;
  684.      m_asyncUpdateTimer.start();
  685.  
  686. diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
  687. index 6b2f7b2..8b4cf9c 100644
  688. --- a/src/plugins/qt4projectmanager/qt4project.h
  689. +++ b/src/plugins/qt4projectmanager/qt4project.h
  690. @@ -193,8 +193,8 @@ public:
  691.      Internal::CentralizedFolderWatcher *centralizedFolderWatcher();
  692.  
  693.  signals:
  694. -    /// emitted after parse
  695. -    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
  696. +    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node, bool);
  697. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
  698.      void buildDirectoryInitialized();
  699.  
  700.  public slots:
  701. diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
  702. index 433986b..400dd1f 100644
  703. --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
  704. +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
  705. @@ -102,7 +102,8 @@ Qt4RunConfiguration::Qt4RunConfiguration(Qt4Target *parent, const QString &proFi
  706.      m_runMode(Gui),
  707.      m_isUsingDyldImageSuffix(false),
  708.      m_userSetWokingDirectory(false),
  709. -    m_baseEnvironmentBase(Qt4RunConfiguration::BuildEnvironmentBase)
  710. +    m_baseEnvironmentBase(Qt4RunConfiguration::BuildEnvironmentBase),
  711. +    m_parseSuccess(true)
  712.  {
  713.      ctor();
  714.  }
  715. @@ -116,7 +117,8 @@ Qt4RunConfiguration::Qt4RunConfiguration(Qt4Target *parent, Qt4RunConfiguration
  716.      m_userSetWokingDirectory(source->m_userSetWokingDirectory),
  717.      m_userWorkingDirectory(source->m_userWorkingDirectory),
  718.      m_userEnvironmentChanges(source->m_userEnvironmentChanges),
  719. -    m_baseEnvironmentBase(source->m_baseEnvironmentBase)
  720. +    m_baseEnvironmentBase(source->m_baseEnvironmentBase),
  721. +    m_parseSuccess(source->m_parseSuccess)
  722.  {
  723.      ctor();
  724.  }
  725. @@ -132,6 +134,8 @@ Qt4Target *Qt4RunConfiguration::qt4Target() const
  726.  
  727.  bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
  728.  {
  729. +    if (!m_parseSuccess)
  730. +        return false;
  731.      Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration *>(configuration);
  732.      QTC_ASSERT(qt4bc, return false);
  733.  
  734. @@ -156,10 +160,28 @@ bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configu
  735.      return enabled;
  736.  }
  737.  
  738. -void Qt4RunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  739. +void Qt4RunConfiguration::handleParseState(bool success)
  740. +{
  741. +    bool enabled = isEnabled();
  742. +    m_parseSuccess = success;
  743. +    if (enabled != isEnabled()) {
  744. +        qDebug()<<"Emitting isEnabledChanged()"<<!enabled;
  745. +        emit isEnabledChanged(!enabled);
  746. +    }
  747. +}
  748. +
  749. +void Qt4RunConfiguration::proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success)
  750. +{
  751. +    if (m_proFilePath != pro->path())
  752. +        return;
  753. +    qDebug()<<"proFileUpdated"<<success;
  754. +    handleParseState(success);
  755. +    emit effectiveTargetInformationChanged();
  756. +}
  757. +
  758. +void Qt4RunConfiguration::proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  759.  {
  760. -    if  (m_proFilePath == pro->path())
  761. -        emit effectiveTargetInformationChanged();
  762. +    handleParseState(false);
  763.  }
  764.  
  765.  void Qt4RunConfiguration::ctor()
  766. @@ -168,9 +190,11 @@ void Qt4RunConfiguration::ctor()
  767.  
  768.      connect(qt4Target(), SIGNAL(environmentChanged()),
  769.              this, SIGNAL(baseEnvironmentChanged()));
  770. +    connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)),
  771. +            this, SLOT(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)));
  772.  
  773. -    connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  774. -            this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  775. +    connect(qt4Target()->qt4Project(), SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  776. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  777.  }
  778.  
  779.  //////
  780. @@ -281,6 +305,8 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run
  781.      m_environmentWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
  782.      vboxTopLayout->addWidget(m_environmentWidget);
  783.  
  784. +    setEnabled(m_qt4RunConfiguration->isEnabled());
  785. +
  786.      connect(m_workingDirectoryEdit, SIGNAL(changed(QString)),
  787.              this, SLOT(workDirectoryEdited()));
  788.  
  789. @@ -319,6 +345,9 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run
  790.  
  791.      connect(qt4RunConfiguration, SIGNAL(baseEnvironmentChanged()),
  792.              this, SLOT(baseEnvironmentChanged()));
  793. +
  794. +    connect(qt4RunConfiguration, SIGNAL(isEnabledChanged(bool)),
  795. +            this, SLOT(runConfigurationEnabledChange(bool)));
  796.  }
  797.  
  798.  Qt4RunConfigurationWidget::~Qt4RunConfigurationWidget()
  799. @@ -374,6 +403,11 @@ void Qt4RunConfigurationWidget::userChangesEdited()
  800.      m_ignoreChange = false;
  801.  }
  802.  
  803. +void Qt4RunConfigurationWidget::runConfigurationEnabledChange(bool enabled)
  804. +{
  805. +    setEnabled(enabled);
  806. +}
  807. +
  808.  void Qt4RunConfigurationWidget::workDirectoryEdited()
  809.  {
  810.      if (m_ignoreChange)
  811. diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h
  812. index 0e3850e..78861a5 100644
  813. --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h
  814. +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h
  815. @@ -75,6 +75,7 @@ public:
  816.      Qt4Target *qt4Target() const;
  817.  
  818.      virtual bool isEnabled(ProjectExplorer::BuildConfiguration *configuration) const;
  819. +    using ProjectExplorer::LocalApplicationRunConfiguration::isEnabled;
  820.      virtual QWidget *createConfigurationWidget();
  821.  
  822.      virtual QString executable() const;
  823. @@ -108,13 +109,15 @@ signals:
  824.      void effectiveTargetInformationChanged();
  825.  
  826.  private slots:
  827. -    void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  828. +    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success);
  829. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  830.  
  831.  protected:
  832.      Qt4RunConfiguration(Qt4Target *parent, Qt4RunConfiguration *source);
  833.      virtual bool fromMap(const QVariantMap &map);
  834.  
  835.  private:
  836. +    void handleParseState(bool success);
  837.      void setRunMode(RunMode runMode);
  838.      void setBaseWorkingDirectory(const QString &workingDirectory);
  839.      QString baseWorkingDirectory() const;
  840. @@ -146,6 +149,7 @@ private:
  841.      QString m_userWorkingDirectory;
  842.      QList<Utils::EnvironmentItem> m_userEnvironmentChanges;
  843.      BaseEnvironmentBase m_baseEnvironmentBase;
  844. +    bool m_parseSuccess;
  845.  };
  846.  
  847.  class Qt4RunConfigurationWidget : public QWidget
  848. @@ -159,7 +163,9 @@ public:
  849.  protected:
  850.      void showEvent(QShowEvent *event);
  851.      void hideEvent(QHideEvent *event);
  852. +
  853.  private slots:
  854. +    void runConfigurationEnabledChange(bool);
  855.      void workDirectoryEdited();
  856.      void workingDirectoryReseted();
  857.      void argumentsEdited(const QString &arguments);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement