#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 : 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); protected: TPaletteHandle *m_paletteHandle; TFrameHandle *m_frameHandle; TXsheetHandle *m_xsheetHandle; QScrollArea *m_pageViewerScrollArea; PaletteViewerGUI::PageViewer *m_pageViewer; TabBarContainter *m_tabBarContainer; PaletteTabBar *m_pagesBar; QToolBar *m_paletteToolBar; QToolBar *m_savePaletteToolBar; 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; protected: void createTabBar(); void createToolBar() { createPaletteToolBar(); createSavePaletteToolBar(); } void createPaletteToolBar(); void createSavePaletteToolBar(); void updateTabBar(); void updateToolBar() { updatePaletteToolBar(); updateSavePaletteToolBar(); } void updatePaletteToolBar(); void updateSavePaletteToolBar(); void resizeEvent(QResizeEvent *event); void contextMenuEvent(QContextMenuEvent *event); void showEvent(QShowEvent *); void hideEvent(QHideEvent *); void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); 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); }; #endif // PALETTEVIEWER_H