//----------------------------------------------------------------------------
// $Id: QtRpl/RplBlockDlg.hpp 2017/07/23 16:20:44 philw $
// Editor dialog for RplBlock objects (Rule, Goal, Method)
//----------------------------------------------------------------------------

#pragma once
#ifndef RplBlockDlgINCLUDED
#define RplBlockDlgINCLUDED

#ifndef RplBaseDlgINCLUDED
#include "RplBaseDlg.hpp"
#endif

#ifndef RplBlockINCLUDED
#include "RplBlock.hpp"
#endif

class Ui_RplBlockDlgWidgets;
class RplBlockPanel;

//--------------------------------------------------------------------------
//+class
//
// CLASS: 
//   RplBlockDlg
//
// DESCRIPTION: 
//   Editor dialogs for RplBlock objects.
//
//--------------------------------------------------------------------------
class RplBlockDlg : public RplBaseDlg
{
   Q_OBJECT

 private:
   Ui_RplBlockDlgWidgets* _ui;
   RplBlockPanel* _impPanel;

 public:
   RplBlockDlg(BaseRWDlg* parent, RplBlock*);
   ~RplBlockDlg();

   virtual bool update()           override;
   virtual bool updateDescr()      override;
   virtual bool updateNotes()      override;
   virtual bool updateLoadStatus() override;
   virtual bool rebuild()          override;

   virtual void selectRplStatement(RplStatement* statement) override;
   virtual void showDescription(bool) override;
   virtual void showNotes(bool)       override;
   virtual void selectStringInDescription(
                  const Rpl::SearchSpec& searchSpec) override;
   virtual void selectStringInNotes(
                  const Rpl::SearchSpec& searchSpec) override;

 public slots:
   virtual void updateEditActions()   override;
   virtual void scrollToDebugCursor() override;

 public:
   virtual RplObj* getRplObj() const override;
   virtual void updateExternalDocButton() override;

 private:
   virtual QString nameEditorText() const override;
};

#endif // RplBlockDlgINCLUDED
//--- (end RplBlockDlg.hpp) ---