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

  Copyright (c) Kapteyn Astronomical Institute
  University of Groningen, Groningen, Netherlands. All Rights Reserved.

  See COPYRIGHT.txt
  or http://www.slicer.org/copyright/copyright.txt for details.

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

  This file was originally developed by Davide Punzo, Kapteyn Astronomical Institute,
  and was supported through the European Research Council grant nr. 291531.

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

#ifndef __qMRMLPlotViewControllerWidget_p_h
#define __qMRMLPlotViewControllerWidget_p_h

//
//  W A R N I N G
//  -------------
//
// This file is not part of the Slicer API.  It exists purely as an
// implementation detail.  This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//

// qMRML includes
#include "qMRMLPlotViewControllerWidget.h"
#include "qMRMLViewControllerBar_p.h"
#include "ui_qMRMLPlotViewControllerWidget.h"

// VTK includes
#include <vtkWeakPointer.h>

class QAction;
class vtkMRMLPlotViewNode;
class vtkMRMLPlotChartNode;
class QString;

//-----------------------------------------------------------------------------
class qMRMLPlotViewControllerWidgetPrivate
  : public qMRMLViewControllerBarPrivate
  , public Ui_qMRMLPlotViewControllerWidget
{
  Q_OBJECT
  QVTK_OBJECT
  Q_DECLARE_PUBLIC(qMRMLPlotViewControllerWidget);

public:
  typedef qMRMLViewControllerBarPrivate Superclass;
  qMRMLPlotViewControllerWidgetPrivate(qMRMLPlotViewControllerWidget& object);
  ~qMRMLPlotViewControllerWidgetPrivate() override;

  void init() override;

  vtkWeakPointer<vtkMRMLPlotChartNode> PlotChartNode;
  qMRMLPlotView* PlotView;

  QToolButton* FitToWindowToolButton;

  vtkMRMLPlotChartNode* GetPlotChartNodeFromView();

public slots:
  /// Called after a PlotChartNode is selected
  /// using the associated qMRMLNodeComboBox.
  void onPlotChartNodeSelected(vtkMRMLNode* node);

  /// Called after an PlotSeriesNode is selected
  /// using the associated qMRMLNodeComboBox.
  void onPlotSeriesNodesSelected();

  /// Called after a PlotSeriesNode is added
  /// using the associated qMRMLNodeComboBox.
  void onPlotSeriesNodeAdded(vtkMRMLNode* node);

  /// Called after a Plot type is selected using the qComboBox.
  /// Changes type of all associated plots.
  void onPlotTypeChanged(int);

  /// Called after interaction mode is changed by using the qComboBox.
  void onInteractionModeChanged(int);

protected:
  void setupPopupUi() override;

public:
};

#endif
