//=========================================================================
//  Copyright (c) Kitware, Inc.
//  All rights reserved.
//  See LICENSE.txt 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 notice for more information.
//=========================================================================
// .NAME qtCMBSceneObjectDuplicateDialog - imports an object into the scene.
// .SECTION Description
// .SECTION Caveats

#ifndef __qtCMBSceneObjectDuplicateDialog_h
#define __qtCMBSceneObjectDuplicateDialog_h

#include "cmbAppCommonExport.h"
#include "cmbSystemConfig.h"
#include <QObject>
#include <QStringList>
#include <vector>

class pqCMBSceneNode;
class pqCMBSceneObjectBase;
class QDialog;
class qtCMBPlacementConstraintWidget;

namespace Ui
{
class qtCMBSceneObjectDuplicate;
};

class CMBAPPCOMMON_EXPORT qtCMBSceneObjectDuplicateDialog : public QObject
{
  Q_OBJECT

public:
  // returns the number of copies
  static int getCopyInfo(pqCMBSceneNode* parent, bool enableGlyphOption,
    bool enableTextureConstraintOption, bool& useGlyphPlayback,
    QMap<pqCMBSceneNode*, int>& constraints, bool& okToUseGlyphs, bool& useTextureConstraint,
    int& glyphPlaybackOption, QString& glyphPlaybackFileName);

protected slots:
  void accept();
  void cancel();

protected:
  qtCMBSceneObjectDuplicateDialog(pqCMBSceneNode* n, bool enableGylphOption,
    bool enableTextureConstraintOption, bool& useGlyphPlayback);
  qtCMBSceneObjectDuplicateDialog()
    : CopyDialog(NULL)
    , MainDialog(NULL)
    , Parent(NULL)
    , Count(0)
  {
  }
  ~qtCMBSceneObjectDuplicateDialog() override;
  int exec(QMap<pqCMBSceneNode*, int>& constraints, bool& okToUseGlyphs, bool& useTextureConstraint,
    bool& useGlyphPlayback, int& glyphPlaybackOption, QString& glyphPlaybackFileName);

  Ui::qtCMBSceneObjectDuplicate* CopyDialog;
  QDialog* MainDialog;
  pqCMBSceneNode* Parent;

  qtCMBPlacementConstraintWidget* PlacementWidget;
  int Count;
};

#endif /* __qtCMBSceneObjectDuplicateDialog_h */
