#pragma once #ifndef PALETTEVIEWER_H #define PALETTEVIEWER_H #include "paletteviewergui.h" #include "toonz/tpalettehandle.h" #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 declaration class QScrollArea; class QToolBar; class PaletteKeyframeNavigator; class TFrameHandle; using namespace PaletteViewerGUI; //----------------------------------------------------------------------------- class DVAPI ChangeStyleCommand { public: ChangeStyleCommand() {} virtual ~ChangeStyleCommand() {} virtual bool onStyleChanged() = 0; }; // DAFARE: non mi piace, forse e' meglio un comando esterno!! class TXsheetHandle; //============================================================================= // PaletteViewer //----------------------------------------------------------------------------- class DVAPI PaletteViewer final : public QFrame { Q_OBJECT public: PaletteViewer(QWidget *parent = 0, PaletteViewType viewType = LEVEL_PALETTE, bool hasSaveToolBar = true, bool hasPageCommand = true, bool hasPasteColors = true); ~PaletteViewer(); const TPaletteHandle *getPaletteHandle() const { return m_paletteHandle; } void setPaletteHandle(TPaletteHandle *paletteHandle); const TFrameHandle *getFrameHandle() const { return m_frameHandle; } void setFrameHandle(TFrameHandle *frameHandle); const TXsheetHandle *getXsheetHandle() const { return m_xsheetHandle; } void setXsheetHandle(TXsheetHandle *xsheetHandle); // for clearing level cache after "paste style" command called from style // selection void setLevelHandle(TXshLevelHandle *levelHandle); TPalette *getPalette(); void setChangeStyleCommand(ChangeStyleCommand *); // gets ownership ChangeStyleCommand *getChangeStyleCommand() const { return m_changeStyleCommand; } int getViewMode() const { return m_pageViewer->getViewMode(); } void setViewMode(int mode) { m_pageViewer->setViewMode((PaletteViewerGUI::PageViewer::ViewMode)mode); } void updateView(); void enableSaveAction(bool enable); bool getIsFrozen() { return m_frozen; } void setIsFrozen(bool frozen); protected: TPaletteHandle *m_paletteHandle; TFrameHandle *m_frameHandle; TXsheetHandle *m_xsheetHandle; TXshLevelHandle *m_levelHandle; QScrollArea *m_pageViewerScrollArea; PaletteViewerGUI::PageViewer *m_pageViewer; TabBarContainter *m_tabBarContainer; PaletteTabBar *m_pagesBar; QToolBar *m_paletteToolBar; QToolBar *m_savePaletteToolBar; QToolBar *m_newPageToolbar; QMenu *m_viewMode; QAction *m_showStyleIndex; int m_indexPageToDelete; PaletteViewType m_viewType; PaletteKeyframeNavigator *m_keyFrameButton; ChangeStyleCommand *m_changeStyleCommand; bool m_hasSavePaletteToolbar; bool m_hasPageCommand; bool m_isSaveActionEnabled; QAction *m_lockPaletteAction; QToolButton *m_lockPaletteToolButton; QToolButton *m_freezePaletteToolButton; bool m_frozen = false; protected: void createTabBar(); void createToolBar() { createPaletteToolBar(); createSavePaletteToolBar(); } void createPaletteToolBar(); void createSavePaletteToolBar(); void updateTabBar(); void updateToolBar() { updatePaletteToolBar(); updateSavePaletteToolBar(); } void updatePaletteToolBar(); void updateSavePaletteToolBar(); void updatePaletteMenu(); void resizeEvent(QResizeEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void showEvent(QShowEvent *) override; void hideEvent(QHideEvent *) override; void dragEnterEvent(QDragEnterEvent *event) override; void dropEvent(QDropEvent *event) override; void clearStyleSelection(); protected slots: void setPageView(int currentIndexPage); void addNewPage(); void addNewColor(); void deletePage(); void saveStudioPalette(); void onColorStyleSwitched(); void onPaletteChanged(); void onPaletteSwitched(); void onFrameSwitched(); void onTabTextChanged(int tabIndex); void onViewMode(QAction *); void changeWindowTitle(); void movePage(int srcIndex, int dstIndex); void startDragDrop(); void onNameDisplayMode(QAction *); void setIsLocked(bool lock); void onSwitchToPage(int pageIndex); void onShowNewStyleButtonToggled(); signals: void frozenChanged(bool frozen); private: void setSaveDefaultText(QAction *action, int levelType); }; #endif // PALETTEVIEWER_H