Fix using favorite Vector Brush

This commit is contained in:
manongjohn 2022-12-02 00:06:59 -05:00
parent 69d48e90d5
commit 515973ce39
2 changed files with 126 additions and 50 deletions

View file

@ -925,7 +925,7 @@ public:
std::vector<StyleChooserPage *> *getStyleSetList(StylePageType pageType); std::vector<StyleChooserPage *> *getStyleSetList(StylePageType pageType);
void setUpdated(TFilePath setPath); void setUpdated(TFilePath setPath);
TFilePath getSetStyleFolder(QString setName); TFilePath getSetStyleFolder(QString setName, StylePageType pageType);
void updatePage(int pageIndex); void updatePage(int pageIndex);

View file

@ -2067,6 +2067,8 @@ void StyleChooserPage::onAddStyleToFavorite() {
setPath += TFilePath("textures"); setPath += TFilePath("textures");
break; break;
case StylePageType::VectorBrush: case StylePageType::VectorBrush:
setPath += TFilePath("vector brushes");
break;
case StylePageType::VectorCustom: case StylePageType::VectorCustom:
case StylePageType::VectorGenerated: case StylePageType::VectorGenerated:
setPath += TFilePath("vector styles"); setPath += TFilePath("vector styles");
@ -2100,7 +2102,8 @@ void StyleChooserPage::onCopyStyleToSet() {
m_selection.clear(); m_selection.clear();
m_selection.push_back(m_currentIndex); m_selection.push_back(m_currentIndex);
addSelectedStylesToSet(m_selection, m_editor->getSetStyleFolder(setName)); addSelectedStylesToSet(m_selection,
m_editor->getSetStyleFolder(setName, m_pageType));
m_selection.clear(); m_selection.clear();
} }
@ -2114,7 +2117,8 @@ void StyleChooserPage::onMoveStyleToSet() {
m_selection.clear(); m_selection.clear();
m_selection.push_back(m_currentIndex); m_selection.push_back(m_currentIndex);
addSelectedStylesToSet(m_selection, m_editor->getSetStyleFolder(setName)); addSelectedStylesToSet(m_selection,
m_editor->getSetStyleFolder(setName, m_pageType));
removeSelectedStylesFromSet(m_selection); removeSelectedStylesFromSet(m_selection);
m_selection.clear(); m_selection.clear();
} }
@ -2790,6 +2794,7 @@ public:
void removeSelectedStylesFromSet(std::vector<int> selection) override; void removeSelectedStylesFromSet(std::vector<int> selection) override;
void addSelectedStylesToSet(std::vector<int> selection, void addSelectedStylesToSet(std::vector<int> selection,
TFilePath setPath) override; TFilePath setPath) override;
void updateFavorite() override { emit refreshFavorites(); };
void addSelectedStylesToPalette(std::vector<int> selection) override; void addSelectedStylesToPalette(std::vector<int> selection) override;
void changeStyleSetFolder(TFilePath newPath) override { void changeStyleSetFolder(TFilePath newPath) override {
TStyleManager::instance()->changeStyleSetFolder(m_styleManager, newPath); TStyleManager::instance()->changeStyleSetFolder(m_styleManager, newPath);
@ -3054,8 +3059,7 @@ void TextureStyleChooserPage::addSelectedStylesToPalette(
m_editor->addToPalette(style); m_editor->addToPalette(style);
// If selecting Custom Style, only, switch to Settings page automatically // If selecting Custom Style, only, switch to Settings page automatically
if (style.isCustom()) if (style.isCustom()) emit customStyleSelected();
emit customStyleSelected();
} }
} }
@ -4066,6 +4070,9 @@ StyleEditor::StyleEditor(PaletteController *paletteController, QWidget *parent)
createStylePage(StylePageType::VectorCustom, createStylePage(StylePageType::VectorCustom,
myFavoritesPath + TFilePath("vector styles"), myFavoritesPath + TFilePath("vector styles"),
getStylePageFilter(StylePageType::VectorCustom), true); getStylePageFilter(StylePageType::VectorCustom), true);
createStylePage(StylePageType::VectorBrush,
myFavoritesPath + TFilePath("vector brushes"),
getStylePageFilter(StylePageType::VectorBrush), true);
createStylePage(StylePageType::Raster, createStylePage(StylePageType::Raster,
myFavoritesPath + TFilePath("raster styles"), myFavoritesPath + TFilePath("raster styles"),
getStylePageFilter(StylePageType::Raster), true); getStylePageFilter(StylePageType::Raster), true);
@ -4681,7 +4688,8 @@ bool StyleEditor::isSelectingFavorites() {
if (tab == StyleEditorTab::Texture) if (tab == StyleEditorTab::Texture)
return (m_texturePages[0]->getSelection().size() > 0); return (m_texturePages[0]->getSelection().size() > 0);
else if (tab == StyleEditorTab::Vector) else if (tab == StyleEditorTab::Vector)
return (m_vectorPages[0]->getSelection().size() > 0); return (m_vectorPages[0]->getSelection().size() > 0 ||
m_vectorPages[1]->getSelection().size() > 0);
else if (tab == StyleEditorTab::Raster) else if (tab == StyleEditorTab::Raster)
return (m_rasterPages[0]->getSelection().size() > 0); return (m_rasterPages[0]->getSelection().size() > 0);
@ -4694,12 +4702,16 @@ bool StyleEditor::isSelectingFavoritesOnly() {
int tab = m_styleBar->currentIndex(); int tab = m_styleBar->currentIndex();
std::vector<StyleChooserPage *> *pages; std::vector<StyleChooserPage *> *pages;
int nonFavPagesOffset = 1;
if (tab == StyleEditorTab::Texture) { if (tab == StyleEditorTab::Texture) {
if (m_texturePages[0]->getSelection().size() == 0) return false; if (m_texturePages[0]->getSelection().size() == 0) return false;
pages = &m_texturePages; pages = &m_texturePages;
} else if (tab == StyleEditorTab::Vector) { } else if (tab == StyleEditorTab::Vector) {
if (m_vectorPages[0]->getSelection().size() == 0) return false; if (m_vectorPages[0]->getSelection().size() == 0 &&
m_vectorPages[1]->getSelection().size() == 0)
return false;
pages = &m_vectorPages; pages = &m_vectorPages;
nonFavPagesOffset = 2;
} else if (tab == StyleEditorTab::Raster) { } else if (tab == StyleEditorTab::Raster) {
if (m_rasterPages[0]->getSelection().size() == 0) return false; if (m_rasterPages[0]->getSelection().size() == 0) return false;
pages = &m_rasterPages; pages = &m_rasterPages;
@ -4707,7 +4719,7 @@ bool StyleEditor::isSelectingFavoritesOnly() {
return false; return false;
std::vector<StyleChooserPage *>::iterator it; std::vector<StyleChooserPage *>::iterator it;
for (it = pages->begin() + 1; it != pages->end(); it++) { for (it = pages->begin() + nonFavPagesOffset; it != pages->end(); it++) {
StyleChooserPage *page = *it; StyleChooserPage *page = *it;
if (page->getSelection().size() > 0) return false; if (page->getSelection().size() > 0) return false;
} }
@ -4721,12 +4733,16 @@ bool StyleEditor::isSelectingNonFavoritesOnly() {
int tab = m_styleBar->currentIndex(); int tab = m_styleBar->currentIndex();
std::vector<StyleChooserPage *> *pages; std::vector<StyleChooserPage *> *pages;
int nonFavPageOffset = 1;
if (tab == StyleEditorTab::Texture) { if (tab == StyleEditorTab::Texture) {
if (m_texturePages[0]->getSelection().size() >= 0) return false; if (m_texturePages[0]->getSelection().size() >= 0) return false;
pages = &m_texturePages; pages = &m_texturePages;
} else if (tab == StyleEditorTab::Vector) { } else if (tab == StyleEditorTab::Vector) {
if (m_vectorPages[0]->getSelection().size() >= 0) return false; if (m_vectorPages[0]->getSelection().size() >= 0 ||
m_vectorPages[1]->getSelection().size())
return false;
pages = &m_vectorPages; pages = &m_vectorPages;
nonFavPageOffset = 2;
} else if (tab == StyleEditorTab::Raster) { } else if (tab == StyleEditorTab::Raster) {
if (m_rasterPages[0]->getSelection().size() >= 0) return false; if (m_rasterPages[0]->getSelection().size() >= 0) return false;
pages = &m_rasterPages; pages = &m_rasterPages;
@ -4734,7 +4750,7 @@ bool StyleEditor::isSelectingNonFavoritesOnly() {
return false; return false;
std::vector<StyleChooserPage *>::iterator it; std::vector<StyleChooserPage *>::iterator it;
for (it = pages->begin() + 1; it != pages->end(); it++) { for (it = pages->begin() + 2; it != pages->end(); it++) {
StyleChooserPage *page = *it; StyleChooserPage *page = *it;
if (page->getSelection().size() > 0) return true; if (page->getSelection().size() > 0) return true;
} }
@ -5035,9 +5051,10 @@ void StyleEditor::setPage(int index) {
if (!m_enabledFirstAndLastTab) { if (!m_enabledFirstAndLastTab) {
if (index == StyleEditorTab::Texture) if (index == StyleEditorTab::Texture)
m_texturePages[0]->loadItems(); m_texturePages[0]->loadItems();
else if (index == StyleEditorTab::Vector) else if (index == StyleEditorTab::Vector) {
m_vectorPages[0]->loadItems(); m_vectorPages[0]->loadItems();
else if (index == StyleEditorTab::Raster) m_vectorPages[1]->loadItems();
} else if (index == StyleEditorTab::Raster)
m_rasterPages[0]->loadItems(); m_rasterPages[0]->loadItems();
m_styleChooser->setCurrentIndex(index); m_styleChooser->setCurrentIndex(index);
return; return;
@ -5809,8 +5826,16 @@ void StyleEditor::createStylePage(StylePageType pageType, TFilePath styleFolder,
menuAction->setDefaultWidget(checkBox); menuAction->setDefaultWidget(checkBox);
// Favorites should be 1st // Favorites should be 1st
if (isMyFavoriteSet) if (isMyFavoriteSet) {
menuAction->setVisible(!m_vectorButtons[0]->isHidden()); label->setHidden(true);
button->setHidden(true);
button->setDisabled(true);
checkBox->setHidden(true);
checkBox->setDisabled(true);
connect(m_vectorButtons[0], SIGNAL(toggled(bool)), newPage,
SLOT(onTogglePage(bool)));
menuAction->setVisible(false);
}
m_vectorMenu->insertAction( m_vectorMenu->insertAction(
m_vectorMenu->actions()[m_vectorPages.size() - 1], menuAction); m_vectorMenu->actions()[m_vectorPages.size() - 1], menuAction);
@ -5987,8 +6012,16 @@ void StyleEditor::onToggleVectorSet(int checkedState) {
if (index >= m_vectorPages.size()) return; if (index >= m_vectorPages.size()) return;
m_vectorButtons[index]->setVisible(checked); m_vectorButtons[index]->setVisible(checked);
m_vectorLabels[index]->setVisible(checked); m_vectorLabels[index]->setVisible(checked);
if (m_vectorButtons[index]->isChecked()) if (m_vectorButtons[index]->isChecked()) {
if (index > 0)
m_vectorPages[index]->setVisible(checked); m_vectorPages[index]->setVisible(checked);
else {
if (m_vectorPages[0]->getChipCount() > 1)
m_vectorPages[0]->setVisible(checked);
if (m_vectorPages[1]->getChipCount() > 1)
m_vectorPages[1]->setVisible(checked);
}
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -6207,27 +6240,30 @@ void StyleEditor::setUpdated(TFilePath setPath) {
void StyleEditor::onUpdateFavorites() { void StyleEditor::onUpdateFavorites() {
int tab = m_styleBar->currentIndex(); int tab = m_styleBar->currentIndex();
int chipSize; int chipSize, chipSize1, chipSize2;
QPushButton *button; QPushButton *button;
ClickableLabel *label; ClickableLabel *label;
QMenu *menu; QMenu *menu;
StyleChooserPage *page; StyleChooserPage *page;
int minChipCount = 2; int minChipCount = 2;
if (tab == StyleEditorTab::Texture) { if (tab == StyleEditorTab::Texture) {
chipSize = m_texturePages[0]->getChipCount(); chipSize = chipSize1 = m_texturePages[0]->getChipCount();
button = m_textureButtons[0]; button = m_textureButtons[0];
label = m_textureLabels[0]; label = m_textureLabels[0];
page = m_texturePages[0]; page = m_texturePages[0];
menu = m_textureMenu; menu = m_textureMenu;
minChipCount = 3; minChipCount = 3;
} else if (tab == StyleEditorTab::Vector) { } else if (tab == StyleEditorTab::Vector) {
chipSize = m_vectorPages[0]->getChipCount(); chipSize1 = m_vectorPages[0]->getChipCount();
chipSize2 = m_vectorPages[1]->getChipCount();
chipSize = chipSize1 + chipSize2;
button = m_vectorButtons[0]; button = m_vectorButtons[0];
label = m_vectorLabels[0]; label = m_vectorLabels[0];
page = m_vectorPages[0]; page = m_vectorPages[0];
menu = m_vectorMenu; menu = m_vectorMenu;
minChipCount = 3;
} else if (tab == StyleEditorTab::Raster) { } else if (tab == StyleEditorTab::Raster) {
chipSize = m_rasterPages[0]->getChipCount(); chipSize = chipSize1 = m_rasterPages[0]->getChipCount();
button = m_rasterButtons[0]; button = m_rasterButtons[0];
label = m_rasterLabels[0]; label = m_rasterLabels[0];
page = m_rasterPages[0]; page = m_rasterPages[0];
@ -6243,7 +6279,12 @@ void StyleEditor::onUpdateFavorites() {
if (!checkBox->isChecked()) return; if (!checkBox->isChecked()) return;
label->setHidden(false); label->setHidden(false);
button->setHidden(false); button->setHidden(false);
if (button->isChecked()) page->setHidden(false); if (button->isChecked()) {
if (chipSize1 > 1)
page->setHidden(false);
else
page->setHidden(true);
}
} else { } else {
button->setDisabled(true); button->setDisabled(true);
QWidgetAction *action = qobject_cast<QWidgetAction *>(menu->actions()[0]); QWidgetAction *action = qobject_cast<QWidgetAction *>(menu->actions()[0]);
@ -6256,6 +6297,17 @@ void StyleEditor::onUpdateFavorites() {
} }
update(); update();
if (tab == StyleEditorTab::Vector) {
StyleChooserPage *page2 = m_vectorPages[1];
if (chipSize >= 2 || page2->isLoading()) {
if (chipSize2 > 1)
page2->setHidden(false);
else
page2->setHidden(true);
} else
page2->setHidden(true);
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -6263,17 +6315,19 @@ void StyleEditor::onUpdateFavorites() {
void StyleEditor::onRemoveSelectedStylesFromFavorites() { void StyleEditor::onRemoveSelectedStylesFromFavorites() {
int tab = m_styleBar->currentIndex(); int tab = m_styleBar->currentIndex();
StyleChooserPage *page; StyleChooserPage *page, *page2 = 0;
if (tab == StyleEditorTab::Texture) if (tab == StyleEditorTab::Texture)
page = m_texturePages[0]; page = m_texturePages[0];
else if (tab == StyleEditorTab::Vector) else if (tab == StyleEditorTab::Vector) {
page = m_vectorPages[0]; page = m_vectorPages[0];
else if (tab == StyleEditorTab::Raster) page2 = m_vectorPages[1];
} else if (tab == StyleEditorTab::Raster)
page = m_rasterPages[0]; page = m_rasterPages[0];
else else
return; return;
page->removeSelectedStylesFromSet(page->getSelection()); page->removeSelectedStylesFromSet(page->getSelection());
if (page2) page2->removeSelectedStylesFromSet(page2->getSelection());
clearSelection(); clearSelection();
update(); update();
} }
@ -6290,7 +6344,6 @@ void StyleEditor::onAddSelectedStylesToFavorites() {
setPath = m_texturePages[0]->getStylesFolder(); setPath = m_texturePages[0]->getStylesFolder();
} else if (tab == StyleEditorTab::Vector) { } else if (tab == StyleEditorTab::Vector) {
pages = &m_vectorPages; pages = &m_vectorPages;
setPath = m_vectorPages[0]->getStylesFolder();
} else if (tab == StyleEditorTab::Raster) { } else if (tab == StyleEditorTab::Raster) {
pages = &m_rasterPages; pages = &m_rasterPages;
setPath = m_rasterPages[0]->getStylesFolder(); setPath = m_rasterPages[0]->getStylesFolder();
@ -6300,6 +6353,15 @@ void StyleEditor::onAddSelectedStylesToFavorites() {
std::vector<StyleChooserPage *>::iterator it; std::vector<StyleChooserPage *>::iterator it;
for (it = pages->begin() + 1; it != pages->end(); it++) { for (it = pages->begin() + 1; it != pages->end(); it++) {
StyleChooserPage *page = *it; StyleChooserPage *page = *it;
if (tab == StyleEditorTab::Vector) {
int favIndex = (page->getPageType() == StylePageType::VectorCustom ||
page->getPageType() == StylePageType::VectorGenerated)
? 0
: 1;
setPath = m_vectorPages[favIndex]->getStylesFolder();
}
page->addSelectedStylesToSet(page->getSelection(), setPath); page->addSelectedStylesToSet(page->getSelection(), setPath);
} }
@ -6445,7 +6507,8 @@ void StyleEditor::onRemoveSelectedStyleFromSet() {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
TFilePath StyleEditor::getSetStyleFolder(QString setName) { TFilePath StyleEditor::getSetStyleFolder(QString setName,
StylePageType pageType) {
int tab = m_styleBar->currentIndex(); int tab = m_styleBar->currentIndex();
std::vector<StyleChooserPage *> *pages; std::vector<StyleChooserPage *> *pages;
@ -6462,7 +6525,10 @@ TFilePath StyleEditor::getSetStyleFolder(QString setName) {
std::vector<StyleChooserPage *>::iterator it; std::vector<StyleChooserPage *>::iterator it;
for (it = pages->begin(); it != pages->end(); it++) { for (it = pages->begin(); it != pages->end(); it++) {
StyleChooserPage *page = *it; StyleChooserPage *page = *it;
if (page->getStyleSetName() == setName) return page->getStylesFolder(); if ((pageType != StylePageType::VectorBrush || setName != "My Favorites" ||
page->getPageType() == pageType) &&
page->getStyleSetName() == setName)
return page->getStylesFolder();
} }
return TFilePath(); return TFilePath();
@ -6512,6 +6578,8 @@ void StyleEditor::updatePage(int pageIndex) {
else if (pageIndex == StyleEditorTab::Vector) { else if (pageIndex == StyleEditorTab::Vector) {
pageType = StylePageType::VectorCustom; pageType = StylePageType::VectorCustom;
if ((ToonzFolder::getLibraryFolder() + TFilePath("vector brushes")) if ((ToonzFolder::getLibraryFolder() + TFilePath("vector brushes"))
.isAncestorOf(fp) ||
(ToonzFolder::getMyFavoritesFolder() + TFilePath("vector brushes"))
.isAncestorOf(fp)) .isAncestorOf(fp))
pageType = StylePageType::VectorBrush; pageType = StylePageType::VectorBrush;
} else if (pageIndex == StyleEditorTab::Raster) } else if (pageIndex == StyleEditorTab::Raster)
@ -6567,6 +6635,7 @@ void StyleEditor::onScanStyleSetChanges() {
fps.push_back(libPath + TFilePath("custom styles")); fps.push_back(libPath + TFilePath("custom styles"));
fps.push_back(libPath + TFilePath("vector brushes")); fps.push_back(libPath + TFilePath("vector brushes"));
fps.push_back(favoritesLibPath + TFilePath("vector styles")); fps.push_back(favoritesLibPath + TFilePath("vector styles"));
fps.push_back(favoritesLibPath + TFilePath("vector brushes"));
} else if (tab == StyleEditorTab::Raster) { } else if (tab == StyleEditorTab::Raster) {
pages = &m_rasterPages; pages = &m_rasterPages;
pageType = StylePageType::Raster; pageType = StylePageType::Raster;
@ -6623,7 +6692,9 @@ void StyleEditor::onScanStyleSetChanges() {
for (fpListIt = fpList.begin(); fpListIt != fpList.end(); fpListIt++) { for (fpListIt = fpList.begin(); fpListIt != fpList.end(); fpListIt++) {
TFilePath fp(*fpListIt); TFilePath fp(*fpListIt);
if (tab == StyleEditorTab::Vector) if (tab == StyleEditorTab::Vector)
pageType = (libPath + TFilePath("vector brushes")).isAncestorOf(fp) pageType =
((libPath + TFilePath("vector brushes")).isAncestorOf(fp) ||
(favoritesLibPath + TFilePath("vector brushes")).isAncestorOf(fp))
? StylePageType::VectorBrush ? StylePageType::VectorBrush
: StylePageType::VectorCustom; : StylePageType::VectorCustom;
createNewStyleSet(pageType, fp, false); createNewStyleSet(pageType, fp, false);
@ -6909,10 +6980,12 @@ bool StyleEditor::isStyleNameValid(QString name, StylePageType pageType,
if (pageType == StylePageType::Texture) if (pageType == StylePageType::Texture)
path += TFilePath("textures"); path += TFilePath("textures");
else if (pageType == StylePageType::VectorBrush || else if (pageType == StylePageType::VectorCustom) {
pageType == StylePageType::VectorCustom) {
pageType = StylePageType::VectorCustom; pageType = StylePageType::VectorCustom;
path += TFilePath("vector styles"); path += TFilePath("vector styles");
} else if (pageType == StylePageType::VectorBrush) {
pageType = StylePageType::VectorBrush;
path += TFilePath("vector brushes");
} else if (pageType == StylePageType::Raster) } else if (pageType == StylePageType::Raster)
path += TFilePath("raster styles"); path += TFilePath("raster styles");
} else { } else {
@ -7067,9 +7140,12 @@ void NewStyleSetPopup::createStyleSet() {
if (m_texture->isChecked()) if (m_texture->isChecked())
path += TFilePath("textures"); path += TFilePath("textures");
else if (m_vectorBrush->isChecked() || m_vectorCustom->isChecked()) { else if (m_vectorCustom->isChecked()) {
m_pageType = StylePageType::VectorCustom; m_pageType = StylePageType::VectorCustom;
path += TFilePath("vector styles"); path += TFilePath("vector styles");
} else if (m_vectorBrush->isChecked()) {
m_pageType = StylePageType::VectorBrush;
path += TFilePath("vector brushes");
} else if (m_raster->isChecked()) } else if (m_raster->isChecked())
path += TFilePath("raster styles"); path += TFilePath("raster styles");
} else { } else {