Merge pull request #3053 from shun-iwasawa/delete_unused_styles

Revert Delete Unused Styles right-click command
This commit is contained in:
Rodney 2020-01-23 18:34:04 -06:00 committed by GitHub
commit 0ef650c288
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 180 additions and 131 deletions

View file

@ -35,6 +35,7 @@ public:
void clear();
TPalette *getPalette(ToonzScene *scene);
void savePalette(ToonzScene *scene);
bool isFullColorPalette(TPalette *palette) { return m_palette == palette; }
};
#endif // FULLCOLOR_PALETTE

View file

@ -82,6 +82,7 @@ protected:
TPaletteHandle *m_paletteHandle;
TFrameHandle *m_frameHandle;
TXsheetHandle *m_xsheetHandle;
TXshLevelHandle *m_levelHandle;
QScrollArea *m_pageViewerScrollArea;
PaletteViewerGUI::PageViewer *m_pageViewer;
@ -128,6 +129,7 @@ protected:
void resizeEvent(QResizeEvent *event) override;
void contextMenuEvent(QContextMenuEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void showEvent(QShowEvent *) override;
void hideEvent(QHideEvent *) override;

View file

@ -113,6 +113,7 @@ public:
ViewMode getViewMode() const { return m_viewMode; }
void setViewMode(ViewMode mode);
NameDisplayMode getNameDisplayMode() const { return m_nameDisplayMode; }
void setNameDisplayMode(NameDisplayMode mode);
PaletteViewerGUI::PaletteViewType getViewType() const { return m_viewType; }

View file

@ -85,7 +85,7 @@ public:
void pasteStylesColor();
void pasteStylesName();
void deleteStyles();
void eraseUnsedStyle();
void eraseUnusedStyle();
void blendStyles();
void toggleLink();
void eraseToggleLink();

View file

@ -91,7 +91,7 @@ bool isStyleUsed(const TVectorImageP vi, int styleId) {
int regionCount = vi->getRegionCount();
for (i = 0; i < regionCount; i++) {
TRegion *region = vi->getRegion(i);
if (region || region->getStyle() != styleId) return true;
if (region && region->getStyle() == styleId) return true;
}
return false;
}

View file

@ -9,6 +9,7 @@
#include "toonzqt/dvdialog.h"
#include "toonzqt/dvscrollwidget.h"
#include "toonzqt/studiopaletteviewer.h"
#include "toonzqt/styleselection.h"
#include "palettedata.h"
// TnzLib includes
@ -19,6 +20,7 @@
#include "toonz/sceneproperties.h"
#include "toonz/studiopalette.h"
#include "toonz/tframehandle.h"
#include "toonz/fullcolorpalette.h"
// TnzCore includes
#include "tconvert.h"
@ -187,7 +189,7 @@ PaletteViewer::~PaletteViewer() { delete m_changeStyleCommand; }
void PaletteViewer::setPaletteHandle(TPaletteHandle *paletteHandle) {
if (m_paletteHandle == paletteHandle) return;
bool ret = true;
bool ret = true;
if (m_paletteHandle) ret = ret && disconnect(m_paletteHandle, 0, this, 0);
m_paletteHandle = paletteHandle;
@ -238,8 +240,8 @@ void PaletteViewer::setXsheetHandle(TXsheetHandle *xsheetHandle) {
//-----------------------------------------------------------------------------
/*!for clearing level cache after "paste style" command called from style
* selection
*/
* selection
*/
void PaletteViewer::setLevelHandle(TXshLevelHandle *levelHandle) {
m_pageViewer->setLevelHandle(levelHandle);
}
@ -281,7 +283,7 @@ void PaletteViewer::enableSaveAction(bool enable) {
//-----------------------------------------------------------------------------
/*! Create tab bar to select palette page.
*/
*/
void PaletteViewer::createTabBar() {
m_pagesBar = new PaletteTabBar(this, m_hasPageCommand);
@ -295,7 +297,7 @@ void PaletteViewer::createTabBar() {
//-----------------------------------------------------------------------------
/*! Create right part of button bar.
*/
*/
void PaletteViewer::createPaletteToolBar() {
m_paletteToolBar->clear();
m_paletteToolBar->setMovable(false);
@ -356,52 +358,48 @@ void PaletteViewer::createPaletteToolBar() {
viewModeButton->setIcon(viewModeIcon);
QMenu *viewMode = new QMenu(QString("Options"), viewModeButton);
viewMode->setToolTip(tr("Options"));
viewMode->setLayoutDirection(Qt::LeftToRight);
QActionGroup *viewModeGroup = new QActionGroup(viewMode);
viewModeGroup->setExclusive(true);
connect(viewModeGroup, SIGNAL(triggered(QAction *)), this,
SLOT(onViewMode(QAction *)));
QAction *smallThumbAct =
new QAction(tr("&Small Thumbnails View"), viewModeButton);
smallThumbAct->setData(PageViewer::SmallChips);
QAction *mediumThumbAct =
new QAction(tr("&Medium Thumbnails View"), viewModeButton);
mediumThumbAct->setData(PageViewer::MediumChips);
QAction *largeThumbAct =
new QAction(tr("&Large Thumbnails View"), viewModeButton);
largeThumbAct->setData(PageViewer::LargeChips);
auto addViewAction = [&](const QString &label, PageViewer::ViewMode mode) {
QAction *viewAction = new QAction(label, viewMode);
viewAction->setData(mode);
viewAction->setCheckable(true);
if (m_pageViewer->getViewMode() == mode) viewAction->setChecked(true);
viewModeGroup->addAction(viewAction);
viewMode->addAction(viewAction);
};
QAction *listAct = new QAction(tr("&List View"), viewModeButton);
listAct->setData(PageViewer::List);
addViewAction(tr("&Small Thumbnails View"), PageViewer::SmallChips);
addViewAction(tr("&Medium Thumbnails View"), PageViewer::MediumChips);
addViewAction(tr("&Large Thumbnails View"), PageViewer::LargeChips);
addViewAction(tr("&List View"), PageViewer::List);
viewModeGroup->addAction(smallThumbAct);
viewModeGroup->addAction(mediumThumbAct);
viewModeGroup->addAction(largeThumbAct);
viewModeGroup->addAction(listAct);
QAction *styleDisplayAct = new QAction(tr("Style Name"), viewModeButton);
styleDisplayAct->setData(PageViewer::Style);
QAction *originalDisplayAct =
new QAction(tr("StudioPalette Name"), viewModeButton);
originalDisplayAct->setData(PageViewer::Original);
QAction *bothDisplayAct = new QAction(tr("Both Names"), viewModeButton);
bothDisplayAct->setData(PageViewer::StyleAndOriginal);
viewMode->addSeparator();
QActionGroup *nameDisplayModeGroup = new QActionGroup(viewMode);
nameDisplayModeGroup->setExclusive(true);
connect(nameDisplayModeGroup, SIGNAL(triggered(QAction *)), this,
SLOT(onNameDisplayMode(QAction *)));
nameDisplayModeGroup->addAction(styleDisplayAct);
nameDisplayModeGroup->addAction(originalDisplayAct);
nameDisplayModeGroup->addAction(bothDisplayAct);
viewMode->addAction(smallThumbAct);
viewMode->addAction(mediumThumbAct);
viewMode->addAction(largeThumbAct);
viewMode->addAction(listAct);
viewMode->addSeparator();
viewMode->addAction(styleDisplayAct);
viewMode->addAction(originalDisplayAct);
viewMode->addAction(bothDisplayAct);
auto addNameDisplayAction = [&](const QString &label,
PageViewer::NameDisplayMode mode) {
QAction *nameDisplayAction = new QAction(label, viewMode);
nameDisplayAction->setData(mode);
nameDisplayAction->setCheckable(true);
if (m_pageViewer->getNameDisplayMode() == mode)
nameDisplayAction->setChecked(true);
nameDisplayModeGroup->addAction(nameDisplayAction);
viewMode->addAction(nameDisplayAction);
};
addNameDisplayAction(tr("Style Name"), PageViewer::Style);
addNameDisplayAction(tr("StudioPalette Name"), PageViewer::Original);
addNameDisplayAction(tr("Both Names"), PageViewer::StyleAndOriginal);
viewModeButton->setMenu(viewMode);
@ -492,7 +490,7 @@ void PaletteViewer::createSavePaletteToolBar() {
//-----------------------------------------------------------------------------
/*! Update page tab bar adding or removing tab in accord with viewer palette.
*/
*/
void PaletteViewer::updateTabBar() {
int tabCount = m_pagesBar->count();
int i;
@ -518,8 +516,8 @@ void PaletteViewer::updateTabBar() {
//-----------------------------------------------------------------------------
/*! Update right button bar, enable its action if current viewer palette is
* empty.
*/
* empty.
*/
void PaletteViewer::updatePaletteToolBar() {
if (!m_paletteToolBar) return;
QList<QAction *> actions;
@ -544,8 +542,8 @@ void PaletteViewer::updatePaletteToolBar() {
//-----------------------------------------------------------------------------
/*! Update left button bar, enable its action if current viewer palette is
* empty.
*/
* empty.
*/
void PaletteViewer::updateSavePaletteToolBar() {
if (!m_savePaletteToolBar) return;
QList<QAction *> actions;
@ -567,7 +565,7 @@ void PaletteViewer::updateSavePaletteToolBar() {
//-----------------------------------------------------------------------------
/*! Resize the widget and its child.
*/
*/
void PaletteViewer::resizeEvent(QResizeEvent *event) {
QWidget::resizeEvent(event);
if (m_pageViewer) m_pageViewer->computeSize();
@ -585,7 +583,7 @@ void PaletteViewer::setChangeStyleCommand(
//-----------------------------------------------------------------------------
/*! Create and open the Right-click menu.
*/
*/
void PaletteViewer::contextMenuEvent(QContextMenuEvent *event) {
m_indexPageToDelete = -1;
QPoint pos = event->pos();
@ -619,11 +617,29 @@ void PaletteViewer::contextMenuEvent(QContextMenuEvent *event) {
menu->addAction(CommandManager::instance()->getAction("MI_SavePaletteAs"));
}
if (m_viewType == LEVEL_PALETTE && !getPalette()->isLocked() &&
m_isSaveActionEnabled &&
!FullColorPalette::instance()->isFullColorPalette(getPalette())) {
menu->addSeparator();
menu->addAction(
CommandManager::instance()->getAction("MI_EraseUnusedStyles"));
}
menu->exec(event->globalPos());
}
//-----------------------------------------------------------------------------
void PaletteViewer::mousePressEvent(QMouseEvent *event) {
QFrame::mousePressEvent(event);
if (event->button() == Qt::RightButton) {
m_pageViewer->getSelection()->makeCurrent();
m_pageViewer->updateCommandLocks();
}
}
//-----------------------------------------------------------------------------
void PaletteViewer::showEvent(QShowEvent *) {
onPaletteSwitched();
changeWindowTitle();
@ -711,7 +727,7 @@ void PaletteViewer::dragEnterEvent(QDragEnterEvent *event) {
//-----------------------------------------------------------------------------
/*! Execute drop event.
*/
*/
void PaletteViewer::dropEvent(QDropEvent *event) {
if (m_viewType == CLEANUP_PALETTE) return;
const QMimeData *mimeData = event->mimeData();
@ -792,7 +808,7 @@ void PaletteViewer::dropEvent(QDropEvent *event) {
//-----------------------------------------------------------------------------
/*! Start drag and drop; if current page exist set drag and drop event data.
*/
*/
void PaletteViewer::startDragDrop() {
TRepetitionGuard guard;
if (!guard.hasLock()) return;
@ -818,7 +834,7 @@ void PaletteViewer::clearStyleSelection() { m_pageViewer->clearSelection(); }
//-----------------------------------------------------------------------------
/*! Set current view page to \b currentIndexPage
*/
*/
void PaletteViewer::setPageView(int currentIndexPage) {
TPalette *palette = getPalette();
TPalette::Page *page = palette ? palette->getPage(currentIndexPage) : 0;
@ -857,7 +873,7 @@ void PaletteViewer::addNewColor() {
//-----------------------------------------------------------------------------
/*! Emit a signal to delete a page of current palette viewer.
*/
*/
void PaletteViewer::deletePage() {
TPalette *palette = getPalette();
if (!palette || palette->isLocked()) return;
@ -944,7 +960,7 @@ void PaletteViewer::saveStudioPalette() {
//-----------------------------------------------------------------------------
/*! If current color switched update current page view.
*/
*/
void PaletteViewer::onColorStyleSwitched() {
TPalette *palette = getPalette();
@ -978,7 +994,7 @@ void PaletteViewer::onColorStyleSwitched() {
//-----------------------------------------------------------------------------
/*! Update view. Remember current page bar index.
*/
*/
void PaletteViewer::onPaletteChanged() {
int index = m_pagesBar->currentIndex();
updateTabBar();
@ -1002,7 +1018,7 @@ void PaletteViewer::onPaletteSwitched() {
if (palette) {
int currentStyleId = palette->getCurrentStyleId();
TPalette::Page *page = palette->getStylePage(currentStyleId);
if (page) pageIndex = page->getIndex();
if (page) pageIndex = page->getIndex();
}
}
onSwitchToPage(pageIndex);
@ -1038,7 +1054,7 @@ void PaletteViewer::onFrameSwitched() {
//-----------------------------------------------------------------------------
/*! Set a new name to palette page of index \b tabIndex.
*/
*/
void PaletteViewer::onTabTextChanged(int tabIndex) {
if (!m_paletteHandle) return;
QString newName = m_pagesBar->tabText(tabIndex);
@ -1048,7 +1064,7 @@ void PaletteViewer::onTabTextChanged(int tabIndex) {
//-----------------------------------------------------------------------------
/*! Change page style view mode.
*/
*/
void PaletteViewer::onViewMode(QAction *action) {
int viewMode = action->data().toInt();
m_pageViewer->setViewMode((PageViewer::ViewMode)viewMode);
@ -1056,7 +1072,7 @@ void PaletteViewer::onViewMode(QAction *action) {
//-----------------------------------------------------------------------------
/*! Change name display mode on the style chips
*/
*/
void PaletteViewer::onNameDisplayMode(QAction *action) {
int nameDisplayMode = action->data().toInt();
m_pageViewer->setNameDisplayMode(
@ -1108,8 +1124,8 @@ void PaletteViewer::changeWindowTitle() {
//-----------------------------------------------------------------------------
/*! Move palette view page from \b srcIndex page index to \b dstIndex page
* index.
*/
* index.
*/
void PaletteViewer::movePage(int srcIndex, int dstIndex) {
PaletteCmd::movePalettePage(m_paletteHandle, srcIndex, dstIndex);
onSwitchToPage(dstIndex);
@ -1117,7 +1133,7 @@ void PaletteViewer::movePage(int srcIndex, int dstIndex) {
//-----------------------------------------------------------------------------
/*! Process when the lock button toggled
*/
*/
void PaletteViewer::setIsLocked(bool lock) {
if (m_viewType == CLEANUP_PALETTE) return;

View file

@ -194,7 +194,7 @@ TXsheetHandle *PageViewer::getXsheetHandle() const {
//-----------------------------------------------------------------------------
/*! for clearing the cache when executing paste style command from
* StyleSelection
*/
*/
void PageViewer::setLevelHandle(TXshLevelHandle *levelHandle) {
m_styleSelection->setLevelHandle(levelHandle);
}
@ -228,7 +228,7 @@ int PageViewer::getCurrentStyleIndex() const {
//-----------------------------------------------------------------------------
/*! Set current page to \b page and update view.
*/
*/
void PageViewer::setPage(TPalette::Page *page) {
m_page = page;
computeSize();
@ -237,7 +237,7 @@ void PageViewer::setPage(TPalette::Page *page) {
//-----------------------------------------------------------------------------
/*! Return chip count contained in current page.
*/
*/
int PageViewer::getChipCount() const {
return m_page ? m_page->getStyleCount() : 0;
}
@ -245,7 +245,7 @@ int PageViewer::getChipCount() const {
//-----------------------------------------------------------------------------
/*! Set current view mode \b PaletteViewerGUI::PageViewer::ViewMode to \b
* viewMode and update view.
*/
*/
void PageViewer::setViewMode(ViewMode viewMode) {
if (m_viewMode == viewMode) return;
m_viewMode = viewMode;
@ -286,7 +286,7 @@ QRect PageViewer::getItemRect(int index) const {
//-----------------------------------------------------------------------------
/*! Return rect of color area of chip identified by \b index.
*/
*/
QRect PageViewer::getColorChipRect(int index) const {
QRect rect = getItemRect(index);
if (rect.isNull()) return rect;
@ -299,7 +299,7 @@ QRect PageViewer::getColorChipRect(int index) const {
//-----------------------------------------------------------------------------
/*! Return rect of chip identified by \b index name. (Not in \b SmallChips).
*/
*/
QRect PageViewer::getColorNameRect(int index) const {
QRect rect = getItemRect(index);
if (rect.isNull()) return rect;
@ -317,7 +317,7 @@ QRect PageViewer::getColorNameRect(int index) const {
//-----------------------------------------------------------------------------
/*! Add color to current page; if indexInPage == -1 add color at the bottom of
* page.
*/
*/
void PageViewer::drop(int dstIndexInPage, const QMimeData *mimeData) {
assert(m_page);
TPalette *palette = m_page->getPalette();
@ -325,7 +325,7 @@ void PageViewer::drop(int dstIndexInPage, const QMimeData *mimeData) {
int dstPageIndex = m_page->getIndex();
if ((m_page->getStyleId(0) == 0 || m_page->getStyleId(1) == 1) &&
dstIndexInPage < 2)
dstIndexInPage = 2;
dstIndexInPage = 2;
if (dstIndexInPage < 0) dstIndexInPage = m_page->getStyleCount();
const PaletteData *paletteData = dynamic_cast<const PaletteData *>(mimeData);
@ -387,7 +387,7 @@ void PageViewer::drop(int dstIndexInPage, const QMimeData *mimeData) {
//-----------------------------------------------------------------------------
/*! Create an empty page to receive drop.
*/
*/
void PageViewer::createDropPage() {
if (m_dropPageCreated) return;
m_dropPageCreated = true;
@ -403,7 +403,7 @@ void PageViewer::clearSelection() { m_styleSelection->selectNone(); }
//-----------------------------------------------------------------------------
/*! Return page chip size, it depend from current \b
* PaletteViewerGUI::PageViewer::ViewMode.
*/
*/
QSize PageViewer::getChipSize() const {
if (m_viewMode == SmallChips || m_viewMode == SmallChipsWithName)
return QSize(48, 33);
@ -417,7 +417,7 @@ QSize PageViewer::getChipSize() const {
//-----------------------------------------------------------------------------
/*! Draw a single chip style \b style in \b chipRect.
*/
*/
void PageViewer::drawColorChip(QPainter &p, QRect &chipRect,
TColorStyle *style) {
// draw with MainColor for TSolidColorStyle(3), TColorCleanupStyle(2001)
@ -439,7 +439,7 @@ void PageViewer::drawColorChip(QPainter &p, QRect &chipRect,
//-----------------------------------------------------------------------------
/*! Draw style \b style name in \b nameRect.
*/
*/
void PageViewer::drawColorName(QPainter &p, QRect &nameRect, TColorStyle *style,
int styleIndex) {
if (m_viewMode == SmallChips && style->getFlags() == 0) return;
@ -488,15 +488,15 @@ void PageViewer::drawColorName(QPainter &p, QRect &nameRect, TColorStyle *style,
}
if (m_viewMode == LargeChips) {
QString index = QString::number(styleIndex);
QFont font = p.font();
int fontSize = font.pointSize();
QString index = QString::number(styleIndex);
QFont font = p.font();
int fontSize = font.pointSize();
if (fontSize == -1) fontSize = font.pixelSize();
int length = index.length() * fontSize;
int w = (length > 11) ? (length) : 11;
int h = 11;
int x0 = nameRect.right() - w + 1;
int y0 = nameRect.top() - h - 1;
int length = index.length() * fontSize;
int w = (length > 11) ? (length) : 11;
int h = 11;
int x0 = nameRect.right() - w + 1;
int y0 = nameRect.top() - h - 1;
p.drawText(nameRect.adjusted(6, 1, -6, -1), name);
QRect indexRect(x0, y0, w, h);
p.fillRect(indexRect, QBrush(Qt::white));
@ -528,7 +528,7 @@ void PageViewer::drawColorName(QPainter &p, QRect &nameRect, TColorStyle *style,
//-----------------------------------------------------------------------------
/*! Draw the toggle to know if \b style is linked to a studio palette.
*/
*/
void PageViewer::drawToggleLink(QPainter &p, QRect &chipRect,
TColorStyle *style) {
std::wstring globalName = style->getGlobalName();
@ -556,7 +556,7 @@ void PageViewer::drawToggleLink(QPainter &p, QRect &chipRect,
//-----------------------------------------------------------------------------
/*! Pain current page styles using current view mode.
*/
*/
void PageViewer::paintEvent(QPaintEvent *e) {
QPainter p(this);
if (m_chipPerRow == 0) {
@ -569,10 +569,10 @@ void PageViewer::paintEvent(QPaintEvent *e) {
if (!palette) return;
// [i0,i1] = range celle visibili
QRect visibleRect = e->rect();
int i0 = posToIndex(visibleRect.topLeft());
if (i0 < 0) i0 = 0;
int i1 = posToIndex(visibleRect.bottomRight());
QRect visibleRect = e->rect();
int i0 = posToIndex(visibleRect.topLeft());
if (i0 < 0) i0 = 0;
int i1 = posToIndex(visibleRect.bottomRight());
if (i1 >= getChipCount()) i1 = getChipCount() - 1;
if (m_viewMode == List) {
@ -879,7 +879,7 @@ void PageViewer::paintEvent(QPaintEvent *e) {
//-----------------------------------------------------------------------------
/*! Recall computeSize().
*/
*/
void PageViewer::resizeEvent(QResizeEvent *) { computeSize(); }
//-----------------------------------------------------------------------------
@ -957,7 +957,7 @@ void PageViewer::mousePressEvent(QMouseEvent *event) {
//-----------------------------------------------------------------------------
/*! If left botton is pressed start drag.
*/
*/
void PageViewer::mouseMoveEvent(QMouseEvent *event) {
if (!m_page) return;
if (m_viewType == CLEANUP_PALETTE) return;
@ -1057,7 +1057,7 @@ void PageViewer::addNewPage() {
//-----------------------------------------------------------------------------
/*! Create and open the Right-click menu in page.
*/
*/
void PageViewer::contextMenuEvent(QContextMenuEvent *event) {
QMenu menu(this);
@ -1144,19 +1144,13 @@ void PageViewer::contextMenuEvent(QContextMenuEvent *event) {
connect(newPage, SIGNAL(triggered()), SLOT(addNewPage()));
}
/*
if (m_viewType != STUDIO_PALETTE) {
menu.addAction(cmd->getAction(MI_EraseUnusedStyles));
}
*/
menu.exec(event->globalPos());
}
//-----------------------------------------------------------------------------
/*! Accept drag enter event if evant data ha format \b
* TStyleSelection::getMimeType().
*/
*/
void PageViewer::dragEnterEvent(QDragEnterEvent *event) {
if (!m_page) return;
const PaletteData *paletteData =
@ -1176,7 +1170,7 @@ void PageViewer::dragEnterEvent(QDragEnterEvent *event) {
if (index < 0)
index = 0;
else if (index > m_page->getStyleCount())
index = m_page->getStyleCount();
index = m_page->getStyleCount();
m_dropPositionIndex = index;
update();
event->acceptProposedAction();
@ -1196,7 +1190,7 @@ void PageViewer::dragMoveEvent(QDragMoveEvent *event) {
if (index < 0)
index = 0;
else if (index > m_page->getStyleCount())
index = m_page->getStyleCount();
index = m_page->getStyleCount();
m_dropPositionIndex = index;
update();
event->acceptProposedAction();
@ -1205,7 +1199,7 @@ void PageViewer::dragMoveEvent(QDragMoveEvent *event) {
//-----------------------------------------------------------------------------
/*! If event data has correct format drop it in current drop position index.
*/
*/
void PageViewer::dropEvent(QDropEvent *event) {
int dstIndexInPage = m_dropPositionIndex;
m_dropPositionIndex = -1;
@ -1217,7 +1211,7 @@ void PageViewer::dropEvent(QDropEvent *event) {
//-----------------------------------------------------------------------------
/*! Set to -1 drag position index and update view.
*/
*/
void PageViewer::dragLeaveEvent(QDragLeaveEvent *event) {
m_dropPositionIndex = -1;
update();
@ -1225,7 +1219,7 @@ void PageViewer::dragLeaveEvent(QDragLeaveEvent *event) {
//-----------------------------------------------------------------------------
/*! Start drag and drop; if current page exist set drag and drop event data.
*/
*/
void PageViewer::startDragDrop() {
TRepetitionGuard guard;
if (!guard.hasLock()) return;
@ -1272,9 +1266,8 @@ void PageViewer::keyPressEvent(QKeyEvent *e) {
if (key ==
cManager->getKeyFromShortcut(cManager->getShortcutFromId(V_ZoomIn)))
zoomInChip();
else if (key ==
cManager->getKeyFromShortcut(
cManager->getShortcutFromId(V_ZoomOut)))
else if (key == cManager->getKeyFromShortcut(
cManager->getShortcutFromId(V_ZoomOut)))
zoomOutChip();
else
e->ignore();
@ -1301,7 +1294,7 @@ void PageViewer::hideEvent(QHideEvent *) {
//-----------------------------------------------------------------------------
/*! Manage page tooltip.
*/
*/
bool PageViewer::event(QEvent *e) {
if (m_page && e->type() == QEvent::ToolTip) {
QHelpEvent *helpEvent = dynamic_cast<QHelpEvent *>(e);
@ -1383,8 +1376,8 @@ void PageViewer::select(int indexInPage, QMouseEvent *event) {
}
bool isStyleChanged = false;
if (on) selected = true;
int styleIndex = m_page->getStyleId(indexInPage);
if (on) selected = true;
int styleIndex = m_page->getStyleId(indexInPage);
if (selected) {
setCurrentStyleIndex(styleIndex);
@ -1402,7 +1395,7 @@ void PageViewer::select(int indexInPage, QMouseEvent *event) {
//-----------------------------------------------------------------------------
/*! Compute page size in regard to chip count.
*/
*/
void PageViewer::computeSize() {
if (!m_page) {
m_chipPerRow = 0;
@ -1428,7 +1421,7 @@ void PageViewer::onFrameChanged() {
//-----------------------------------------------------------------------------
/*! Rename current style and update its view in current page.
*/
*/
// recall from m_renameTextField
void PageViewer::onStyleRenamed() {
m_renameTextField->hide();
@ -1482,7 +1475,7 @@ PaletteTabBar::PaletteTabBar(QWidget *parent, bool hasPageCommand)
//-----------------------------------------------------------------------------
/*! Hide rename text field and recall \b QTabBar::mousePressEvent().
*/
*/
void PaletteTabBar::mousePressEvent(QMouseEvent *event) {
m_renameTextField->hide();
QTabBar::mousePressEvent(event);
@ -1513,7 +1506,7 @@ void PaletteTabBar::mouseMoveEvent(QMouseEvent *event) {
//-----------------------------------------------------------------------------
/*! Set a text field with focus in event position to edit tab name.
*/
*/
void PaletteTabBar::mouseDoubleClickEvent(QMouseEvent *event) {
if (!m_hasPageCommand) return;
if (m_pageViewer->getPage()->getPalette()->isLocked()) return;
@ -1531,7 +1524,7 @@ void PaletteTabBar::mouseDoubleClickEvent(QMouseEvent *event) {
//-----------------------------------------------------------------------------
/*! If event data is a paletteData accept drag event; otherwise return.
*/
*/
void PaletteTabBar::dragEnterEvent(QDragEnterEvent *event) {
if (!m_hasPageCommand) return;
const PaletteData *paletteData =
@ -1569,7 +1562,7 @@ void PaletteTabBar::dragMoveEvent(QDragMoveEvent *event) {
//-----------------------------------------------------------------------------
/*! Recall PageViewer::drop().
*/
*/
void PaletteTabBar::dropEvent(QDropEvent *event) {
if (!m_hasPageCommand) return;
if (!dynamic_cast<const PaletteData *>(event->mimeData())) return;
@ -1695,7 +1688,7 @@ void PageViewer::setNameDisplayMode(NameDisplayMode mode) {
//-----------------------------------------------------------------------------
/*! lock the commands when the styleSelection set to current
*/
*/
void PageViewer::updateCommandLocks() {
if (!m_page) return;
// iwasawa
@ -1713,4 +1706,5 @@ void PageViewer::updateCommandLocks() {
cmd->getAction("MI_GetColorFromStudioPalette")->setEnabled(!isLocked);
cmd->getAction("MI_ToggleLinkToStudioPalette")->setEnabled(!isLocked);
cmd->getAction("MI_RemoveReferenceToStudioPalette")->setEnabled(!isLocked);
cmd->getAction("MI_EraseUnusedStyles")->setEnabled(!isLocked);
}

View file

@ -169,7 +169,7 @@ void deleteStylesWithoutUndo(TPalette *palette, TPaletteHandle *pltHandle,
int pageIndex, std::set<int> *styleIndicesInPage,
int fir = 0) {
if (!palette) palette = pltHandle->getPalette();
int n = styleIndicesInPage->size();
int n = styleIndicesInPage->size();
if (n == 0) return;
TPalette::Page *page = palette->getPage(pageIndex);
assert(page);
@ -510,7 +510,7 @@ void TStyleSelection::enableCommands() {
}
}
enableCommand(this, MI_Clear, &TStyleSelection::deleteStyles);
enableCommand(this, MI_EraseUnusedStyles, &TStyleSelection::eraseUnsedStyle);
enableCommand(this, MI_EraseUnusedStyles, &TStyleSelection::eraseUnusedStyle);
enableCommand(this, MI_BlendColors, &TStyleSelection::blendStyles);
}
@ -694,7 +694,7 @@ void TStyleSelection::deleteStyles() {
//-------------------------------------------------------------------
void TStyleSelection::eraseUnsedStyle() {
void TStyleSelection::eraseUnusedStyle() {
std::set<TXshSimpleLevel *> levels;
int row, column, i, j;
TPalette *palette = m_paletteHandle->getPalette();
@ -728,26 +728,59 @@ void TStyleSelection::eraseUnsedStyle() {
}
}
TUndoManager::manager()->beginBlock();
// check if there are styles to be erased
QMap<int, std::set<int>> styleIndicesInPageMap;
QString indicesStr;
int count = 0;
// Butto gli stili non usati
for (i = 0; i < pageCount; i++) {
// Variabili usate per l'undo
std::set<int> styleIndicesInPage;
StyleData *data = new StyleData();
TPalette::Page *page = palette->getPage(i);
assert(page);
for (j = 0; j < page->getStyleCount(); j++) {
int styleId = page->getStyleId(j);
if (usedStyleIds[styleId]) continue;
styleIndicesInPage.insert(j);
data->addStyle(styleId, page->getStyle(j)->clone());
if (count < 10) indicesStr.append(QString::number(styleId) + ", ");
count++;
}
// Se styleIndicesInPage e' vuoto ci sono stili da cancellare.
if (styleIndicesInPage.empty()) {
delete data;
continue;
if (!styleIndicesInPage.empty())
styleIndicesInPageMap.insert(i, styleIndicesInPage);
}
if (styleIndicesInPageMap.isEmpty()) {
DVGui::error(QObject::tr("There are no unused styles."));
return;
}
if (count <= 10)
indicesStr.chop(2);
else
indicesStr.append(
QObject::tr("and %1 more styles.").arg(QString::number(count - 10)));
// open confirmation popup
QString question =
QObject::tr(
"Erasing unused styles with following indices. Are you sure?\n\n%1")
.arg(indicesStr);
int ret =
DVGui::MsgBox(question, QObject::tr("Erase"), QObject::tr("Cancel"), 0);
if (ret == 2 || ret == 0) return;
TUndoManager::manager()->beginBlock();
QMap<int, std::set<int>>::const_iterator styleMapItr =
styleIndicesInPageMap.constBegin();
while (styleMapItr != styleIndicesInPageMap.constEnd()) {
int pageIndex = styleMapItr.key();
std::set<int> styleIndicesInPage = styleMapItr.value();
StyleData *data = new StyleData();
TPalette::Page *page = palette->getPage(pageIndex);
for (auto indexInPage : styleIndicesInPage) {
int styleId = page->getStyleId(indexInPage);
data->addStyle(styleId, page->getStyle(indexInPage)->clone());
}
// Cancello gli stili
std::set<int>::reverse_iterator it;
for (it = styleIndicesInPage.rbegin(); it != styleIndicesInPage.rend();
@ -755,9 +788,11 @@ void TStyleSelection::eraseUnsedStyle() {
page->removeStyle(*it);
// Undo
DeleteStylesUndo *undo = new DeleteStylesUndo(this, data);
undo->setPageIndex(i);
undo->setPageIndex(pageIndex);
undo->setStyleIndicesInPage(styleIndicesInPage);
TUndoManager::manager()->add(undo);
++styleMapItr;
}
TUndoManager::manager()->endBlock();
m_paletteHandle->setStyleIndex(1);
@ -1436,7 +1471,7 @@ void TStyleSelection::toggleLink() {
name[0] = name[0] == L'-' ? L'+' : L'-';
cs->setGlobalName(name);
if (name[0] == L'+') somethingHasBeenLinked = true;
somethingChanged = true;
somethingChanged = true;
}
undo->setColorStyle(index, oldCs, name);
@ -1594,7 +1629,7 @@ public:
//-----------------------------------------------------------------------------
/*! remove link from studio palette. Delete the global and the orginal names.
* return true if something changed
*/
*/
void TStyleSelection::removeLink() {
TPalette *palette = getPalette();
if (!palette || m_pageIndex < 0) return;
@ -1709,7 +1744,7 @@ public:
//-----------------------------------------------------------------------------
/*! get the color from the linked style of the studio palette
*/
*/
void TStyleSelection::getBackOriginalStyle() {
TPalette *palette = getPalette();
if (!palette || m_pageIndex < 0) return;
@ -1792,7 +1827,7 @@ void TStyleSelection::getBackOriginalStyle() {
//-----------------------------------------------------------------------------
/*! return true if there is at least one linked style in the selection
*/
*/
bool TStyleSelection::hasLinkedStyle() {
TPalette *palette = getPalette();