#pragma once #ifndef FRAMENVIGATOR_H #define FRAMENVIGATOR_H // TnzCore includes #include "tcommon.h" // TnzQt includes #include "toonzqt/intfield.h" // Qt includes #include #include #undef DVAPI #undef DVVAR #ifdef TOONZQT_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif //====================================================== // Forward declarations class TFrameHandle; //====================================================== //***************************************************************************** // KeyframeNavigator declaration //***************************************************************************** /*! \brief The FrameNavigator is a simple toolbar widget showing a numerical representation of an integer timeline. \details A FrameNavigator is a TFrameHandle viewer composed of a line edit widget showing the current frame number, and a pair of directional arrow buttons that move to adjacent frames. \remark The text field actually visualizes the internal integer \p m_frame \a +1 (e.g. when \p m_frame is 0 then 1 is visualized). */ class DVAPI FrameNavigator final : public QToolBar { Q_OBJECT TFrameHandle *m_frameHandle; int m_frame; DVGui::IntLineEdit *m_lineEdit; public: FrameNavigator(QWidget *parent = 0); ~FrameNavigator() {} int getFrame() const { return m_frame; } void setFrameHandle(TFrameHandle *); //!< Attaches the navigator to the //! specified frameHandle. //! \remark Detaches from any previously attached frame handle. bool anyWidgetHasFocus(); signals: void frameSwitched(); public slots: void setFrame( int frame, bool notifyFrameHandler); //!< Sets the navigator's current frame. //! \deprecated Remove the bool. void prevFrame() { setFrame(m_frame - 1, true); } //!< Move to previous frame. void nextFrame() { setFrame(m_frame + 1, true); } //!< Move to next frame. protected: void showEvent(QShowEvent *) override; void hideEvent(QHideEvent *) override; void updateFrame(int frame); //!< Changes frame without emitting any signal //! and notifying the frameHandle. protected slots: /*! \details Copies the value in the frame's line edit widget to the internal current frame value. */ void onEditingFinished(); //!< Slot invoked whenever current frame's text //! editing is finished. void onFrameSwitched(); }; #endif // FRAMENVIGATORTOOLBAR_H