|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/studiopaletteviewer.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/menubarcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/paletteviewer.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/dvdialog.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/trepetitionguard.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/gutil.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/icongenerator.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/intfield.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "palettesscanpopup.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "palettedata.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/studiopalettecmd.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tpalettehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshsimplelevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/sceneproperties.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheethandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshlevelhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tconvert.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tundo.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tsystem.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "../toonz/menubarcommandids.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qheaderview></qheaderview>
|
|
Toshihiro Shimizu |
890ddd |
#include <qcontextmenuevent></qcontextmenuevent>
|
|
Toshihiro Shimizu |
890ddd |
#include <qmenu></qmenu>
|
|
Toshihiro Shimizu |
890ddd |
#include <qurl></qurl>
|
|
Toshihiro Shimizu |
890ddd |
#include <qpainter></qpainter>
|
|
Toshihiro Shimizu |
890ddd |
#include <qvboxlayout></qvboxlayout>
|
|
Toshihiro Shimizu |
890ddd |
#include <qtoolbar></qtoolbar>
|
|
Toshihiro Shimizu |
890ddd |
#include <qinputdialog></qinputdialog>
|
|
Toshihiro Shimizu |
890ddd |
#include <qpushbutton></qpushbutton>
|
|
Toshihiro Shimizu |
890ddd |
#include <qdrag></qdrag>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include <time.h></time.h>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
using namespace std;
|
|
Toshihiro Shimizu |
890ddd |
using namespace PaletteViewerGUI;
|
|
Toshihiro Shimizu |
890ddd |
using namespace DVGui;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
namespace
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Return true if path is in folder \b rootPath of \b StudioPalette.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
bool isInStudioPaletteFolder(TFilePath path, TFilePath rootPath)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (path.getType() != "tpl")
|
|
Toshihiro Shimizu |
890ddd |
return false;
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
std::vector<tfilepath> childrenPath;</tfilepath>
|
|
Toshihiro Shimizu |
890ddd |
studioPalette->getChildren(childrenPath, rootPath);
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)childrenPath.size(); i++) {
|
|
Toshihiro Shimizu |
890ddd |
if (path == childrenPath[i])
|
|
Toshihiro Shimizu |
890ddd |
return true;
|
|
Toshihiro Shimizu |
890ddd |
else if (isInStudioPaletteFolder(path, childrenPath[i]))
|
|
Toshihiro Shimizu |
890ddd |
return true;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
return false;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Return true if path is in a \b StudioPalette folder.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
bool isInStudioPalette(TFilePath path)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (path.getType() != "tpl")
|
|
Toshihiro Shimizu |
890ddd |
return false;
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
if (isInStudioPaletteFolder(path, studioPalette->getLevelPalettesRoot()))
|
|
Toshihiro Shimizu |
890ddd |
return true;
|
|
Toshihiro Shimizu |
890ddd |
if (isInStudioPaletteFolder(path, studioPalette->getProjectPalettesRoot()))
|
|
Toshihiro Shimizu |
890ddd |
return true;
|
|
Toshihiro Shimizu |
890ddd |
return false;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
} //namespace
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// StudioPaletteTreeViewer
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteTreeViewer::StudioPaletteTreeViewer(QWidget *parent,
|
|
Toshihiro Shimizu |
890ddd |
TPaletteHandle *studioPaletteHandle,
|
|
Toshihiro Shimizu |
890ddd |
TPaletteHandle *levelPaletteHandle,
|
|
Toshihiro Shimizu |
890ddd |
TXsheetHandle *xsheetHandle,
|
|
Toshihiro Shimizu |
890ddd |
TXshLevelHandle *currentLevelHandle)
|
|
Toshihiro Shimizu |
890ddd |
: QTreeWidget(parent), m_dropItem(0), m_studioPaletteHandle(studioPaletteHandle), m_levelPaletteHandle(levelPaletteHandle), m_currentLevelHandle(currentLevelHandle), m_xsheetHandle(xsheetHandle), m_folderIcon(QIcon()), m_levelPaletteIcon(QIcon()), m_studioPaletteIcon(QIcon())
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
setIndentation(14);
|
|
Toshihiro Shimizu |
890ddd |
setAlternatingRowColors(true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
header()->close();
|
|
Toshihiro Shimizu |
890ddd |
setUniformRowHeights(true);
|
|
Toshihiro Shimizu |
890ddd |
setIconSize(QSize(21, 17));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> paletteItems;</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QString open = QString(":Resources/folder_close.png");
|
|
Toshihiro Shimizu |
890ddd |
QString close = QString(":Resources/folder_open.png");
|
|
Toshihiro Shimizu |
890ddd |
m_folderIcon.addFile(close, QSize(21, 17), QIcon::Normal, QIcon::On);
|
|
Toshihiro Shimizu |
890ddd |
m_folderIcon.addFile(open, QSize(21, 17), QIcon::Normal, QIcon::Off);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QString levelPaletteIcon = QString(":Resources/palette.png");
|
|
Toshihiro Shimizu |
890ddd |
m_levelPaletteIcon.addPixmap(levelPaletteIcon, QIcon::Normal, QIcon::On);
|
|
Toshihiro Shimizu |
890ddd |
QString studioPaletteIcon = QString(":Resources/studiopalette.png");
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteIcon.addPixmap(studioPaletteIcon, QIcon::Normal, QIcon::On);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath levelPalettePath = studioPalette->getLevelPalettesRoot();
|
|
Toshihiro Shimizu |
890ddd |
paletteItems.append(createRootItem(levelPalettePath));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath projectPalettePath = studioPalette->getProjectPalettesRoot();
|
|
Toshihiro Shimizu |
890ddd |
if (TSystem::doesExistFileOrLevel(projectPalettePath))
|
|
Toshihiro Shimizu |
890ddd |
paletteItems.append(createRootItem(projectPalettePath));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
insertTopLevelItems(0, paletteItems);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool ret = connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int)), SLOT(onItemChanged(QTreeWidgetItem *, int)));
|
|
Toshihiro Shimizu |
890ddd |
ret = ret && connect(this, SIGNAL(itemClicked(QTreeWidgetItem *, int)), SLOT(onItemClicked(QTreeWidgetItem *, int)));
|
|
Toshihiro Shimizu |
890ddd |
ret = ret && connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
|
|
Toshihiro Shimizu |
890ddd |
SLOT(onCurrentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
|
|
Toshihiro Shimizu |
890ddd |
ret = ret && connect(this, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(onTreeItemExpanded(QTreeWidgetItem *)));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//refresh tree with shortcut key
|
|
Toshihiro Shimizu |
890ddd |
QAction *refreshAct = CommandManager::instance()->getAction(MI_RefreshTree);
|
|
Toshihiro Shimizu |
890ddd |
ret = ret && connect(refreshAct, SIGNAL(triggered()), this, SLOT(onRefreshTreeShortcutTriggered()));
|
|
Toshihiro Shimizu |
890ddd |
addAction(refreshAct);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
m_palettesScanPopup = new PalettesScanPopup();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
setAcceptDrops(true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//Per la selezione multipla
|
|
Toshihiro Shimizu |
890ddd |
setSelectionMode(QAbstractItemView::ExtendedSelection);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette::instance()->addListener(this);
|
|
Toshihiro Shimizu |
890ddd |
TProjectManager::instance()->addListener(this);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
refresh();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
assert(ret);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteTreeViewer::~StudioPaletteTreeViewer()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette::instance()->removeListener(this);
|
|
Toshihiro Shimizu |
890ddd |
TProjectManager::instance()->removeListener(this);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::setCurrentLevelHandle(TXshLevelHandle *currentLevelHandle)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_currentLevelHandle = currentLevelHandle;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//---------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::setLevelPaletteHandle(TPaletteHandle *paletteHandle)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_levelPaletteHandle = paletteHandle;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::setStdPaletteHandle(TPaletteHandle *studioPaletteHandle)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteHandle = studioPaletteHandle;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *StudioPaletteTreeViewer::createRootItem(TFilePath path)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QString rootName = QString::fromStdWString(path.getWideName());
|
|
Toshihiro Shimizu |
890ddd |
if (rootName != "Toonz Palettes")
|
|
Toshihiro Shimizu |
890ddd |
rootName = "Project Palettes";
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *rootItem = new QTreeWidgetItem((QTreeWidget *)0, QStringList(rootName));
|
|
Toshihiro Shimizu |
890ddd |
rootItem->setIcon(0, m_folderIcon);
|
|
Toshihiro Shimizu |
890ddd |
rootItem->setData(1, Qt::UserRole, toQString(path));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(rootItem);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
return rootItem;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool StudioPaletteTreeViewer::isRootItem(QTreeWidgetItem *item)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
assert(item);
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getItemPath(item);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
if (path == studioPalette->getLevelPalettesRoot() ||
|
|
Toshihiro Shimizu |
890ddd |
path == studioPalette->getProjectPalettesRoot())
|
|
Toshihiro Shimizu |
890ddd |
return true;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
return false;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *StudioPaletteTreeViewer::createItem(const TFilePath path)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
QString itemName = toQString(TFilePath(path.getWideName()));
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidget *)0, QStringList(itemName));
|
|
Toshihiro Shimizu |
890ddd |
if (studioPalette->isPalette(path)) {
|
|
Toshihiro Shimizu |
890ddd |
if (studioPalette->hasGlobalName(path))
|
|
Toshihiro Shimizu |
890ddd |
item->setIcon(0, m_studioPaletteIcon);
|
|
Toshihiro Shimizu |
890ddd |
else
|
|
Toshihiro Shimizu |
890ddd |
item->setIcon(0, m_levelPaletteIcon);
|
|
Toshihiro Shimizu |
890ddd |
} else if (studioPalette->isFolder(path))
|
|
Toshihiro Shimizu |
890ddd |
item->setIcon(0, m_folderIcon);
|
|
Toshihiro Shimizu |
890ddd |
item->setData(1, Qt::UserRole, toQString(path));
|
|
Toshihiro Shimizu |
890ddd |
item->setFlags(item->flags() | Qt::ItemIsEditable);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
return item;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath StudioPaletteTreeViewer::getItemPath(QTreeWidgetItem *item)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = (item) ? TFilePath(item->data(1, Qt::UserRole).toString().toStdWString())
|
|
Toshihiro Shimizu |
890ddd |
: TFilePath();
|
|
Toshihiro Shimizu |
890ddd |
return path;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath StudioPaletteTreeViewer::getCurrentFolderPath()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
return getItemPath(currentItem());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *StudioPaletteTreeViewer::getItem(const TFilePath path)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> oldItems = findItems(QString(""), Qt::MatchContains, 0);</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
if (oldItems.isEmpty())
|
|
Toshihiro Shimizu |
890ddd |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)oldItems.size(); i++) {
|
|
Toshihiro Shimizu |
890ddd |
TFilePath oldItemPath(oldItems[i]->data(1, Qt::UserRole).toString().toStdWString());
|
|
Toshihiro Shimizu |
890ddd |
if (oldItemPath == path)
|
|
Toshihiro Shimizu |
890ddd |
return oldItems[i];
|
|
Toshihiro Shimizu |
890ddd |
else {
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *item = getFolderItem(oldItems[i], path);
|
|
Toshihiro Shimizu |
890ddd |
if (item)
|
|
Toshihiro Shimizu |
890ddd |
return item;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *StudioPaletteTreeViewer::getFolderItem(QTreeWidgetItem *parent, const TFilePath path)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
int childrenCount = parent->childCount();
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < childrenCount; i++) {
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *item = parent->child(i);
|
|
Toshihiro Shimizu |
890ddd |
if (getItemPath(item) == path)
|
|
Toshihiro Shimizu |
890ddd |
return item;
|
|
Toshihiro Shimizu |
890ddd |
else {
|
|
Toshihiro Shimizu |
890ddd |
item = getFolderItem(item, path);
|
|
Toshihiro Shimizu |
890ddd |
if (item)
|
|
Toshihiro Shimizu |
890ddd |
return item;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::resetDropItem()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (!m_dropItem)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
m_dropItem->setTextColor(0, Qt::black);
|
|
Toshihiro Shimizu |
890ddd |
m_dropItem = 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::refresh()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_openedItems.clear();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath levelPalettePath = studioPalette->getLevelPalettesRoot();
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(getItem(levelPalettePath));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath projectPalettePath = studioPalette->getProjectPalettesRoot();
|
|
Toshihiro Shimizu |
890ddd |
if (!TSystem::doesExistFileOrLevel(projectPalettePath))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(getItem(projectPalettePath));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//refresh all expanded items
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = findItems(QString(""), Qt::MatchContains | Qt::MatchRecursive, 0);</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
if (items.isEmpty())
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
for (int i = 0; i < (int)items.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
if (items[i]->isExpanded())
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(items[i]);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*!When expand a tree, prepare the child items of it
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::onTreeItemExpanded(QTreeWidgetItem *item)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (!item)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//if this item was not yet opened, then get the children of this item
|
|
Toshihiro Shimizu |
890ddd |
if (!m_openedItems.contains(item))
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(item);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//expand the item
|
|
Toshihiro Shimizu |
890ddd |
item->setExpanded(!item->isExpanded());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Refresh tree only when this widget has focus
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::onRefreshTreeShortcutTriggered()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (hasFocus())
|
|
Toshihiro Shimizu |
890ddd |
refresh();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Update the content of item
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::refreshItem(QTreeWidgetItem *item)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TFilePath folderPath = getItemPath(item);
|
|
Toshihiro Shimizu |
890ddd |
assert(folderPath != TFilePath());
|
|
Toshihiro Shimizu |
890ddd |
//correct only tpl files and folders
|
|
Toshihiro Shimizu |
890ddd |
std::vector<tfilepath> childrenPath;</tfilepath>
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette::instance()->getChildren(childrenPath, folderPath);
|
|
Toshihiro Shimizu |
890ddd |
int currentChildCount = item->childCount();
|
|
Toshihiro Shimizu |
890ddd |
std::vector<qtreewidgetitem *=""> currentChildren;</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < currentChildCount; i++)
|
|
Toshihiro Shimizu |
890ddd |
currentChildren.push_back(item->child(i));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int childrenPathCount = childrenPath.size();
|
|
Toshihiro Shimizu |
890ddd |
int itemIndex = 0;
|
|
Toshihiro Shimizu |
890ddd |
int pathIndex = 0;
|
|
Toshihiro Shimizu |
890ddd |
while (itemIndex < currentChildCount || pathIndex < childrenPathCount) {
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = (pathIndex < childrenPathCount) ? childrenPath[pathIndex] : TFilePath();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *currentItem = (itemIndex < currentChildCount) ? currentChildren[itemIndex] : 0;
|
|
Toshihiro Shimizu |
890ddd |
TFilePath currentItemPath = getItemPath(currentItem);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (path == currentItemPath) {
|
|
Toshihiro Shimizu |
890ddd |
itemIndex++;
|
|
Toshihiro Shimizu |
890ddd |
pathIndex++;
|
|
Toshihiro Shimizu |
890ddd |
} else if ((!path.isEmpty() && path < currentItemPath) ||
|
|
Toshihiro Shimizu |
890ddd |
currentItemPath.isEmpty()) {
|
|
Toshihiro Shimizu |
890ddd |
currentItem = createItem(path);
|
|
Toshihiro Shimizu |
890ddd |
item->insertChild(itemIndex, currentItem);
|
|
Toshihiro Shimizu |
890ddd |
itemIndex++;
|
|
Toshihiro Shimizu |
890ddd |
pathIndex++;
|
|
Toshihiro Shimizu |
890ddd |
} else {
|
|
Toshihiro Shimizu |
890ddd |
assert(currentItemPath < path || path.isEmpty());
|
|
Toshihiro Shimizu |
890ddd |
assert(currentItem);
|
|
Toshihiro Shimizu |
890ddd |
item->removeChild(currentItem);
|
|
Toshihiro Shimizu |
890ddd |
itemIndex++;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
m_openedItems.insert(item);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::resetProjectPaletteFolder()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
int projectPaletteIndex = 1;
|
|
Toshihiro Shimizu |
890ddd |
TFilePath projectPalettePath = StudioPalette::instance()->getProjectPalettesRoot();
|
|
Toshihiro Shimizu |
890ddd |
// Prendo l'item del project palette.
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *projectPaletteItem = topLevelItem(projectPaletteIndex);
|
|
Toshihiro Shimizu |
890ddd |
if (projectPaletteItem) {
|
|
Toshihiro Shimizu |
890ddd |
// Se il path dell'item e' uguale a quello del project palette corrente ritorno.
|
|
Toshihiro Shimizu |
890ddd |
if (getItemPath(projectPaletteItem) == projectPalettePath)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
// Altrimenti lo rimuovo.
|
|
Toshihiro Shimizu |
890ddd |
removeItemWidget(projectPaletteItem, 0);
|
|
Toshihiro Shimizu |
890ddd |
delete projectPaletteItem;
|
|
Toshihiro Shimizu |
890ddd |
//clear the item list in order to search the folder from scratch
|
|
Toshihiro Shimizu |
890ddd |
m_openedItems.clear();
|
|
Toshihiro Shimizu |
890ddd |
//Toonz Palette is not changed, so resurrect the ToonzPaletteRoot
|
|
Toshihiro Shimizu |
890ddd |
m_openedItems.insert(topLevelItem(0));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
if (!TSystem::doesExistFileOrLevel(projectPalettePath))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
// Creo il nuovo item con il nuovo project folder e lo inserisco nell'albero.
|
|
Toshihiro Shimizu |
890ddd |
// Items in the ProjectPaletteRoot are refreshed here. Stored in openedItems as well.
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *newProjectPaletteItem = createRootItem(projectPalettePath);
|
|
Toshihiro Shimizu |
890ddd |
insertTopLevelItem(projectPaletteIndex, newProjectPaletteItem);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
setCurrentItem(0);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::onItemClicked(QTreeWidgetItem *item, int column)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (currentItem() && m_studioPaletteHandle && m_currentPalette.getPointer()) {
|
|
Toshihiro Shimizu |
890ddd |
// if(m_studioPaletteHandle->getPalette() != m_currentPalette.getPointer())
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteHandle->setPalette(m_currentPalette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteHandle->notifyPaletteSwitched();
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::updateAllLinkedStyles(m_levelPaletteHandle, m_xsheetHandle);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::onItemChanged(QTreeWidgetItem *item, int column)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (item != currentItem() || isRootItem(item))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
wstring name = item->text(column).toStdWString();
|
|
Toshihiro Shimizu |
890ddd |
TFilePath oldPath = getCurrentFolderPath();
|
|
Toshihiro Shimizu |
890ddd |
if (oldPath.isEmpty() || name.empty() || oldPath.getWideName() == name)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPath(oldPath.getParentDir() + TFilePath(name + toWideString(oldPath.getDottedType())));
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::movePalette(newPath, oldPath);
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error(QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
item->setText(column, QString::fromStdWString(oldPath.getWideName()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't rename file");
|
|
Toshihiro Shimizu |
890ddd |
item->setText(column, QString::fromStdWString(oldPath.getWideName()));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(getItem(oldPath.getParentDir()));
|
|
Toshihiro Shimizu |
890ddd |
setCurrentItem(getItem(newPath));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Called when the current palette is switched
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::onCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TFilePath oldPath = getItemPath(previous);
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPath = getCurrentFolderPath();
|
|
Toshihiro Shimizu |
890ddd |
if (!m_studioPaletteHandle)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (m_currentPalette.getPointer() && m_currentPalette->getDirtyFlag()) {
|
|
Toshihiro Shimizu |
890ddd |
TFilePath oldPath = StudioPalette::instance()->getPalettePath(m_currentPalette->getGlobalName());
|
|
Toshihiro Shimizu |
890ddd |
if (oldPath == newPath)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
wstring gname = m_currentPalette->getGlobalName();
|
|
Toshihiro Shimizu |
890ddd |
QString question;
|
|
Toshihiro Shimizu |
890ddd |
question = "The current palette " + QString::fromStdWString(oldPath.getWideString()) + " \nin the studio palette has been modified. Do you want to save your changes?";
|
|
Shinya Kitaoka |
eabf18 |
int ret = DVGui::MsgBox(question, QObject::tr("Save"), QObject::tr("Discard"), QObject::tr("Cancel"), 0);
|
|
Toshihiro Shimizu |
890ddd |
if (ret == 3) {
|
|
Toshihiro Shimizu |
890ddd |
setCurrentItem(getItem(oldPath));
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
if (ret == 1) {
|
|
Toshihiro Shimizu |
890ddd |
//If the palette is level palette (i.e. NOT stdio palette), just overwrite it
|
|
Toshihiro Shimizu |
890ddd |
if (gname.empty())
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette::instance()->save(oldPath, m_currentPalette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
else
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette::instance()->setPalette(oldPath, m_currentPalette.getPointer(), false);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
m_currentPalette->setDirtyFlag(false);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
//load palette here
|
|
Toshihiro Shimizu |
890ddd |
m_currentPalette = StudioPalette::instance()->getPalette(newPath, false);
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteHandle->setPalette(m_currentPalette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteHandle->notifyPaletteSwitched();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::addNewPalette()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (!currentItem()) {
|
|
Toshihiro Shimizu |
890ddd |
error("Error: No folder selected.");
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPath;
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
newPath = StudioPaletteCmd::createPalette(getCurrentFolderPath(), "", 0);
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't create palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't create palette");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(currentItem());
|
|
Toshihiro Shimizu |
890ddd |
setCurrentItem(getItem(newPath));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::addNewFolder()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (!currentItem()) {
|
|
Toshihiro Shimizu |
890ddd |
error("Error: No folder selected.");
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPath;
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
newPath = StudioPaletteCmd::addFolder(getCurrentFolderPath());
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't create palette folder: " + QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't create palette folder");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(currentItem());
|
|
Toshihiro Shimizu |
890ddd |
setCurrentItem(getItem(newPath));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Convert level palette to studio palette.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::convertToStudioPalette()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getItemPath(currentItem());
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
if (studioPalette->isPalette(path)) {
|
|
Toshihiro Shimizu |
890ddd |
TPalette *palette = studioPalette->getPalette(path);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (!palette) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't touch palette");
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (m_currentPalette->getPaletteName() != palette->getPaletteName()) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't touch palette");
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QString question;
|
|
Toshihiro Shimizu |
890ddd |
question = QString::fromStdWString(L"Convert " + path.getWideString() + L" to Studio Palette and Overwrite. \nAre you sure ?");
|
|
Shinya Kitaoka |
eabf18 |
int ret = DVGui::MsgBox(question, QObject::tr("Yes"), QObject::tr("No"));
|
|
Toshihiro Shimizu |
890ddd |
if (ret == 0 || ret == 2)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// apply global name
|
|
Toshihiro Shimizu |
890ddd |
time_t ltime;
|
|
Toshihiro Shimizu |
890ddd |
time(<ime);
|
|
Toshihiro Shimizu |
890ddd |
wstring gname = toWideString((int)ltime) + L"_" + toWideString(rand());
|
|
Toshihiro Shimizu |
890ddd |
m_currentPalette->setGlobalName(gname);
|
|
Toshihiro Shimizu |
890ddd |
studioPalette->setStylesGlobalNames(m_currentPalette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
studioPalette->save(path, m_currentPalette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
m_currentPalette->setDirtyFlag(false);
|
|
Toshihiro Shimizu |
890ddd |
currentItem()->setIcon(0, m_studioPaletteIcon);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
} else
|
|
Toshihiro Shimizu |
890ddd |
error("Can't find palette");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::deleteItem(QTreeWidgetItem *item)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *parent = item->parent();
|
|
Toshihiro Shimizu |
890ddd |
if (!parent)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (item->childCount() > 0) {
|
|
Toshihiro Shimizu |
890ddd |
QString question;
|
|
Toshihiro Shimizu |
890ddd |
question = tr("This folder is not empty. Delete anyway?");
|
|
Shinya Kitaoka |
eabf18 |
int ret = DVGui::MsgBox(question, QObject::tr("Yes"), QObject::tr("No"));
|
|
Toshihiro Shimizu |
890ddd |
if (ret == 0 || ret == 2)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getItemPath(item);
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
if (studioPalette->isFolder(path)) {
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::deleteFolder(path);
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't delete folder: " + QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't delete folder");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
} else {
|
|
Toshihiro Shimizu |
890ddd |
assert(studioPalette->isPalette(path));
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::deletePalette(path);
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't delete palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't delete palette");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
refreshItem(parent);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::deleteItems()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int count = items.size();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (count == 0) {
|
|
Toshihiro Shimizu |
890ddd |
error("Nothing to delete");
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->beginBlock();
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < count; i++)
|
|
Toshihiro Shimizu |
890ddd |
deleteItem(items[i]);
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->endBlock();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::searchForPalette()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_palettesScanPopup->setCurrentFolder(getCurrentFolderPath());
|
|
Toshihiro Shimizu |
890ddd |
int ret = m_palettesScanPopup->exec();
|
|
Toshihiro Shimizu |
890ddd |
if (ret == QDialog::Accepted)
|
|
Toshihiro Shimizu |
890ddd |
refresh();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class InvalidateIconsUndo : public TUndo
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TPaletteP m_targetPalette, m_oldPalette, m_newPalette;
|
|
Toshihiro Shimizu |
890ddd |
TXshLevelHandle *m_levelHandle;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
InvalidateIconsUndo(TXshLevelHandle *levelHandle)
|
|
Toshihiro Shimizu |
890ddd |
: m_levelHandle(levelHandle)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void undo() const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TXshLevel *level = m_levelHandle->getLevel();
|
|
Toshihiro Shimizu |
890ddd |
if (level) {
|
|
Toshihiro Shimizu |
890ddd |
std::vector<tframeid> fids;</tframeid>
|
|
Toshihiro Shimizu |
890ddd |
level->getFids(fids);
|
|
Toshihiro Shimizu |
890ddd |
invalidateIcons(level, fids);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
void redo() const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
undo();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int getSize() const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
return sizeof(*this);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//----------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
eabf18 |
class AdjustPaletteDialog : public DVGui::Dialog
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
IntField *m_tolerance;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
int getTolerance() { return m_tolerance->getValue(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
AdjustPaletteDialog()
|
|
Toshihiro Shimizu |
890ddd |
: Dialog(0, true, true, "Adjust Current Level to This Palette")
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
setWindowTitle(tr("Adjust Current Level to This Palette"));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
beginVLayout();
|
|
Toshihiro Shimizu |
890ddd |
m_tolerance = new IntField(this);
|
|
Toshihiro Shimizu |
890ddd |
m_tolerance->setRange(0, 255);
|
|
Toshihiro Shimizu |
890ddd |
m_tolerance->setValue(0);
|
|
Toshihiro Shimizu |
890ddd |
addWidget(tr("Tolerance"), m_tolerance);
|
|
Toshihiro Shimizu |
890ddd |
endVLayout();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QPushButton *okBtn = new QPushButton(tr("Apply"), this);
|
|
Toshihiro Shimizu |
890ddd |
okBtn->setDefault(true);
|
|
Toshihiro Shimizu |
890ddd |
QPushButton *cancelBtn = new QPushButton(tr("Cancel"), this);
|
|
Toshihiro Shimizu |
890ddd |
bool ret = connect(okBtn, SIGNAL(clicked()), this, SLOT(accept()));
|
|
Toshihiro Shimizu |
890ddd |
ret = ret && connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));
|
|
Toshihiro Shimizu |
890ddd |
assert(ret);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
addButtonBarWidget(okBtn, cancelBtn);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::loadInCurrentPaletteAndAdaptLevel()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
assert(items.size() == 1);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TPalette *palette = m_levelPaletteHandle->getPalette();
|
|
Toshihiro Shimizu |
890ddd |
if (!palette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TPalette *newPalette = StudioPalette::instance()->getPalette(getItemPath(items[0]), true);
|
|
Toshihiro Shimizu |
890ddd |
if (!newPalette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
AdjustPaletteDialog apd;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (apd.exec() != QDialog::Accepted)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/* awful patch: since in StudioPaletteCmd(defined in toonzlib) I cannot use the invalidateIcons(defined in toonzqt)
|
|
Toshihiro Shimizu |
890ddd |
i do invalidate icons from here using a "fake TUndo", named InvalidateIconsUndo.
|
|
Toshihiro Shimizu |
890ddd |
And, since I need to refresh icons at the end of the processing, i have to put that fake undo twice, one before and one after.
|
|
Toshihiro Shimizu |
890ddd |
this way , when the user do either an undo or a redo operation, I am ensured that the last operation is the icon refresh...
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->beginBlock();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->add(new InvalidateIconsUndo(m_currentLevelHandle));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::loadIntoCurrentPalette(m_levelPaletteHandle, newPalette, m_currentLevelHandle, apd.getTolerance());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->add(new InvalidateIconsUndo(m_currentLevelHandle));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->endBlock();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
InvalidateIconsUndo(m_currentLevelHandle).undo();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::loadInCurrentPalette()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int count = items.size();
|
|
Toshihiro Shimizu |
890ddd |
if (count == 0)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TPalette *palette = m_levelPaletteHandle->getPalette();
|
|
Toshihiro Shimizu |
890ddd |
if (!palette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (palette->isLocked()) {
|
|
Shinya Kitaoka |
eabf18 |
DVGui::warning("Palette is Locked!");
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TPalette *newPalette = StudioPalette::instance()->getPalette(getItemPath(items[0]), false);
|
|
Toshihiro Shimizu |
890ddd |
if (!newPalette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
if (m_xsheetHandle) {
|
|
Toshihiro Shimizu |
890ddd |
int ret = DVGui::eraseStylesInDemand(palette, m_xsheetHandle, newPalette);
|
|
Toshihiro Shimizu |
890ddd |
if (ret == 0)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::loadIntoCurrentPalette(m_levelPaletteHandle, newPalette);
|
|
Toshihiro Shimizu |
890ddd |
m_currentLevelHandle->notifyLevelChange();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TXshLevel *level = m_currentLevelHandle->getLevel();
|
|
Toshihiro Shimizu |
890ddd |
if (level) {
|
|
Toshihiro Shimizu |
890ddd |
std::vector<tframeid> fids;</tframeid>
|
|
Toshihiro Shimizu |
890ddd |
level->getFids(fids);
|
|
Toshihiro Shimizu |
890ddd |
invalidateIcons(level, fids);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 1; i < count; i++) {
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getItemPath(items[i]);
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::mergeIntoCurrentPalette(m_levelPaletteHandle, path);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
// in order to update the title bar of palette viewer
|
|
Toshihiro Shimizu |
890ddd |
m_levelPaletteHandle->getPalette()->setDirtyFlag(true);
|
|
Toshihiro Shimizu |
890ddd |
m_levelPaletteHandle->notifyPaletteChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::replaceCurrentPalette()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int count = items.size();
|
|
Toshihiro Shimizu |
890ddd |
if (count == 0)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//exec confirmation dialog
|
|
Toshihiro Shimizu |
890ddd |
TPalette *current = m_levelPaletteHandle->getPalette();
|
|
Toshihiro Shimizu |
890ddd |
if (!current)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QString label;
|
|
Toshihiro Shimizu |
890ddd |
if (count != 1) //replacing to multiple palettes
|
|
Toshihiro Shimizu |
890ddd |
label = QString::fromStdWString(L"Replacing all selected palettes with the palette \"" + current->getPaletteName() + L"\". \nAre you sure ?");
|
|
Toshihiro Shimizu |
890ddd |
else {
|
|
Toshihiro Shimizu |
890ddd |
TPalette *dstPalette = StudioPalette::instance()->getPalette(getItemPath(items[0]));
|
|
Toshihiro Shimizu |
890ddd |
if (!dstPalette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
label = QString::fromStdWString(L"Replacing the palette \"" + dstPalette->getPaletteName() + L"\" with the palette \"" + current->getPaletteName() + L"\". \nAre you sure ?");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
eabf18 |
int ret = DVGui::MsgBox(label, QObject::tr("Replace"), QObject::tr("Cancel"), 1);
|
|
Toshihiro Shimizu |
890ddd |
if (ret == 0 || ret == 2)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->beginBlock();
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < count; i++)
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::replaceWithCurrentPalette(m_levelPaletteHandle, m_studioPaletteHandle, getItemPath(items[i]));
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->endBlock();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (m_currentPalette)
|
|
Toshihiro Shimizu |
890ddd |
m_currentPalette->setDirtyFlag(false);
|
|
Toshihiro Shimizu |
890ddd |
//in order to update display
|
|
Toshihiro Shimizu |
890ddd |
onCurrentItemChanged(currentItem(), currentItem());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::mergeToCurrentPalette()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int count = items.size();
|
|
Toshihiro Shimizu |
890ddd |
if (count == 0)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->beginBlock();
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < count; i++)
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::mergeIntoCurrentPalette(m_levelPaletteHandle, getItemPath(items[i]));
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->endBlock();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::paintEvent(QPaintEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidget::paintEvent(event);
|
|
Toshihiro Shimizu |
890ddd |
QPainter p(viewport());
|
|
Toshihiro Shimizu |
890ddd |
if (m_dropItem) {
|
|
Toshihiro Shimizu |
890ddd |
p.setPen(QColor(50, 105, 200));
|
|
Toshihiro Shimizu |
890ddd |
p.drawRect(visualItemRect(m_dropItem));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::contextMenuEvent(QContextMenuEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getCurrentFolderPath();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//Menu' per la selezione singola
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int count = items.size();
|
|
Toshihiro Shimizu |
890ddd |
if (count == 1) {
|
|
Toshihiro Shimizu |
890ddd |
// Verify if click position is in a row containing an item.
|
|
Toshihiro Shimizu |
890ddd |
QRect rect = visualItemRect(currentItem());
|
|
Toshihiro Shimizu |
890ddd |
if (!QRect(0, rect.y(), width(), rect.height()).contains(event->pos()))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool isFolder = (studioPalette->isFolder(path));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QMenu menu(this);
|
|
Toshihiro Shimizu |
890ddd |
if (isFolder) {
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("New Palette"), "addNewPalette()");
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("New Folder"), "addNewFolder()");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (studioPalette->isFolder(path) &&
|
|
Toshihiro Shimizu |
890ddd |
studioPalette->getLevelPalettesRoot() != path &&
|
|
Toshihiro Shimizu |
890ddd |
studioPalette->getProjectPalettesRoot() != path) {
|
|
Toshihiro Shimizu |
890ddd |
menu.addSeparator();
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Delete Folder"), "deleteItems()");
|
|
Toshihiro Shimizu |
890ddd |
} else if (studioPalette->isPalette(path)) {
|
|
Toshihiro Shimizu |
890ddd |
if (m_studioPaletteHandle->getPalette()) {
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "MI_LoadIntoCurrentPalette", tr("Load into Current Palette"), "loadInCurrentPalette()");
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "MI_AdjustCurrentLevelToPalette", tr("Adjust Current Level to This Palette"), "loadInCurrentPaletteAndAdaptLevel()");
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "MI_MergeToCurrentPalette", tr("Merge to Current Palette"), "mergeToCurrentPalette()");
|
|
Toshihiro Shimizu |
890ddd |
if (!m_studioPaletteHandle->getPalette()->isLocked()) {
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "MI_ReplaceWithCurrentPalette", tr("Replace with Current Palette"), "replaceCurrentPalette()");
|
|
Toshihiro Shimizu |
890ddd |
menu.addSeparator();
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "MI_DeletePalette", tr("Delete Palette"), "deleteItems()");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
if (!studioPalette->hasGlobalName(path)) {
|
|
Toshihiro Shimizu |
890ddd |
menu.addSeparator();
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Convert to Studio Palette and Overwrite"), "convertToStudioPalette()");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (isFolder) {
|
|
Toshihiro Shimizu |
890ddd |
menu.addSeparator();
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Search for Palettes"), "searchForPalette()");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
menu.exec(event->globalPos());
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//Menu' per la selezione multipla
|
|
Toshihiro Shimizu |
890ddd |
// Verify if click position is in a row containing an item.
|
|
Toshihiro Shimizu |
890ddd |
bool areAllPalette = true;
|
|
Toshihiro Shimizu |
890ddd |
bool isClickInSelection = false;
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < count; i++) {
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *item = items[i];
|
|
Toshihiro Shimizu |
890ddd |
QRect rect = visualItemRect(item);
|
|
Toshihiro Shimizu |
890ddd |
if (QRect(0, rect.y(), width(), rect.height()).contains(event->pos()))
|
|
Toshihiro Shimizu |
890ddd |
isClickInSelection = true;
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getItemPath(item);
|
|
Toshihiro Shimizu |
890ddd |
if (studioPalette->isFolder(path))
|
|
Toshihiro Shimizu |
890ddd |
areAllPalette = false;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
if (!isClickInSelection)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QMenu menu(this);
|
|
Toshihiro Shimizu |
890ddd |
if (areAllPalette) {
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Load into Current Palette"), "loadInCurrentPalette()");
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Merge to Current Palette"), "mergeToCurrentPalette()");
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Replace with Current Palette"), "replaceCurrentPalette()");
|
|
Toshihiro Shimizu |
890ddd |
menu.addSeparator();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
createMenuAction(menu, "", tr("Delete"), "deleteItems()");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
menu.exec(event->globalPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::createMenuAction(QMenu &menu, const char *id, QString name, const char *slot)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QAction *act = menu.addAction(name);
|
|
Toshihiro Shimizu |
890ddd |
string slotName(slot);
|
|
Toshihiro Shimizu |
890ddd |
slotName = string("1") + slotName;
|
|
Toshihiro Shimizu |
890ddd |
connect(act, SIGNAL(triggered()), slotName.c_str());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::mouseMoveEvent(QMouseEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
// If left button is not pressed return; is not drag event.
|
|
Toshihiro Shimizu |
890ddd |
if (!(event->buttons() & Qt::LeftButton))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
startDragDrop();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::startDragDrop()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TRepetitionGuard guard;
|
|
Toshihiro Shimizu |
890ddd |
if (!guard.hasLock())
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QDrag *drag = new QDrag(this);
|
|
Toshihiro Shimizu |
890ddd |
QMimeData *mimeData = new QMimeData;
|
|
Toshihiro Shimizu |
890ddd |
QList<qurl> urls;</qurl>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QList<qtreewidgetitem *=""> items = selectedItems();</qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < items.size(); i++) {
|
|
Toshihiro Shimizu |
890ddd |
//Sposto solo le palette.
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = getItemPath(items[i]);
|
|
Toshihiro Shimizu |
890ddd |
if (!path.isEmpty() &&
|
|
Toshihiro Shimizu |
890ddd |
(path.getType() == "tpl" || path.getType() == "pli" ||
|
|
Toshihiro Shimizu |
890ddd |
path.getType() == "tlv" || path.getType() == "tnz"))
|
|
Toshihiro Shimizu |
890ddd |
urls.append(pathToUrl(path));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
if (urls.isEmpty())
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
mimeData->setUrls(urls);
|
|
Toshihiro Shimizu |
890ddd |
drag->setMimeData(mimeData);
|
|
Toshihiro Shimizu |
890ddd |
Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction);
|
|
Toshihiro Shimizu |
890ddd |
viewport()->update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::dragEnterEvent(QDragEnterEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
const QMimeData *mimeData = event->mimeData();
|
|
Toshihiro Shimizu |
890ddd |
const PaletteData *paletteData = dynamic_cast<const *="" palettedata="">(mimeData);</const>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (acceptResourceDrop(mimeData->urls())) {
|
|
Toshihiro Shimizu |
890ddd |
QList<qurl> urls = mimeData->urls();</qurl>
|
|
Toshihiro Shimizu |
890ddd |
int count = urls.size();
|
|
Toshihiro Shimizu |
890ddd |
if (count == 0)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//Controllo che almeno un url del drag sia una palette da spostare.
|
|
Toshihiro Shimizu |
890ddd |
bool isPalette = false;
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < count; i++) {
|
|
Toshihiro Shimizu |
890ddd |
QUrl url = urls[i];
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path(url.toLocalFile().toStdWString());
|
|
Toshihiro Shimizu |
890ddd |
if (!path.isEmpty() &&
|
|
Toshihiro Shimizu |
890ddd |
(path.getType() == "tpl" || path.getType() == "pli" ||
|
|
Toshihiro Shimizu |
890ddd |
path.getType() == "tlv" || path.getType() == "tnz")) {
|
|
Toshihiro Shimizu |
890ddd |
isPalette = true;
|
|
Toshihiro Shimizu |
890ddd |
break;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
if (!isPalette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
event->acceptProposedAction();
|
|
Toshihiro Shimizu |
890ddd |
} else if (paletteData && paletteData->hasOnlyPalette())
|
|
Toshihiro Shimizu |
890ddd |
event->acceptProposedAction();
|
|
Toshihiro Shimizu |
890ddd |
viewport()->update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::dragMoveEvent(QDragMoveEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QTreeWidgetItem *item = itemAt(event->pos());
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPath = getItemPath(item);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (m_dropItem)
|
|
Toshihiro Shimizu |
890ddd |
m_dropItem->setTextColor(0, Qt::black);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (item) {
|
|
Toshihiro Shimizu |
890ddd |
m_dropItem = item;
|
|
Toshihiro Shimizu |
890ddd |
event->acceptProposedAction();
|
|
Toshihiro Shimizu |
890ddd |
} else {
|
|
Toshihiro Shimizu |
890ddd |
m_dropItem = 0;
|
|
Toshihiro Shimizu |
890ddd |
event->ignore();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
viewport()->update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::dropEvent(QDropEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPath = getItemPath(m_dropItem);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
resetDropItem();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const QMimeData *mimeData = event->mimeData();
|
|
Toshihiro Shimizu |
890ddd |
const PaletteData *paletteData = dynamic_cast<const *="" palettedata="">(mimeData);</const>
|
|
Toshihiro Shimizu |
890ddd |
if (paletteData) {
|
|
Toshihiro Shimizu |
890ddd |
if (paletteData->hasOnlyPalette()) {
|
|
Toshihiro Shimizu |
890ddd |
TPalette *palette = paletteData->getPalette();
|
|
Toshihiro Shimizu |
890ddd |
if (!palette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::createPalette(newPath, toString(palette->getPaletteName()), palette);
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't create palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't create palette");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (!mimeData->hasUrls() || mimeData->urls().size() == 0)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QList<qurl> urls = mimeData->urls();</qurl>
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->beginBlock();
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < urls.size(); i++) {
|
|
Toshihiro Shimizu |
890ddd |
QUrl url = urls[i];
|
|
Toshihiro Shimizu |
890ddd |
TFilePath path = TFilePath(url.toLocalFile().toStdWString());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPalette *studioPalette = StudioPalette::instance();
|
|
Toshihiro Shimizu |
890ddd |
if (path == newPath || path.getParentDir() == newPath)
|
|
Toshihiro Shimizu |
890ddd |
continue;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (isInStudioPalette(path)) {
|
|
Toshihiro Shimizu |
890ddd |
TFilePath newPalettePath = newPath + TFilePath(path.getWideName() + toWideString(path.getDottedType()));
|
|
Toshihiro Shimizu |
890ddd |
try {
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteCmd::movePalette(newPalettePath, path);
|
|
Toshihiro Shimizu |
890ddd |
} catch (TException &e) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't rename palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Toshihiro Shimizu |
890ddd |
} catch (...) {
|
|
Toshihiro Shimizu |
890ddd |
error("Can't rename palette");
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
TUndoManager::manager()->endBlock();
|
|
Toshihiro Shimizu |
890ddd |
event->setDropAction(Qt::CopyAction);
|
|
Toshihiro Shimizu |
890ddd |
event->accept();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StudioPaletteTreeViewer::dragLeaveEvent(QDragLeaveEvent *event)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
resetDropItem();
|
|
Toshihiro Shimizu |
890ddd |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// StudioPaletteViewer
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteViewer::StudioPaletteViewer(QWidget *parent,
|
|
Toshihiro Shimizu |
890ddd |
TPaletteHandle *studioPaletteHandle,
|
|
Toshihiro Shimizu |
890ddd |
TPaletteHandle *levelPaletteHandle,
|
|
Toshihiro Shimizu |
890ddd |
TFrameHandle *frameHandle,
|
|
Toshihiro Shimizu |
890ddd |
TXsheetHandle *xsheetHandle,
|
|
Toshihiro Shimizu |
890ddd |
TXshLevelHandle *currentLevelHandle)
|
|
Toshihiro Shimizu |
890ddd |
: QSplitter(parent)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
// style sheet
|
|
Toshihiro Shimizu |
890ddd |
setObjectName("StudioPaletteViewer");
|
|
Toshihiro Shimizu |
890ddd |
setFrameStyle(QFrame::StyledPanel);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
setAcceptDrops(true);
|
|
Toshihiro Shimizu |
890ddd |
setOrientation(Qt::Vertical);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//First Splitter Widget
|
|
Toshihiro Shimizu |
890ddd |
QWidget *treeWidget = new QWidget(this);
|
|
Toshihiro Shimizu |
890ddd |
QVBoxLayout *treeVLayout = new QVBoxLayout(treeWidget);
|
|
Toshihiro Shimizu |
890ddd |
treeVLayout->setMargin(0);
|
|
Toshihiro Shimizu |
890ddd |
treeVLayout->setSpacing(0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
m_studioPaletteTreeViewer =
|
|
Toshihiro Shimizu |
890ddd |
new StudioPaletteTreeViewer(treeWidget, studioPaletteHandle, levelPaletteHandle, xsheetHandle, currentLevelHandle);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
treeVLayout->addWidget(m_studioPaletteTreeViewer);
|
|
Toshihiro Shimizu |
890ddd |
treeWidget->setLayout(treeVLayout);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//Second Splitter Widget
|
|
Toshihiro Shimizu |
890ddd |
PaletteViewer *studioPaletteViewer = new PaletteViewer(this, PaletteViewerGUI::STUDIO_PALETTE);
|
|
Toshihiro Shimizu |
890ddd |
studioPaletteViewer->setObjectName("PaletteViewerInStudioPalette");
|
|
Toshihiro Shimizu |
890ddd |
studioPaletteViewer->setXsheetHandle(xsheetHandle);
|
|
Toshihiro Shimizu |
890ddd |
studioPaletteViewer->setPaletteHandle(studioPaletteHandle);
|
|
Toshihiro Shimizu |
890ddd |
studioPaletteViewer->setFrameHandle(frameHandle);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
addWidget(treeWidget);
|
|
Toshihiro Shimizu |
890ddd |
addWidget(studioPaletteViewer);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
setFocusProxy(studioPaletteViewer);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StudioPaletteViewer::~StudioPaletteViewer()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! In order to save current palette from the tool button in the PageViewer.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
TFilePath StudioPaletteViewer::getCurrentItemPath()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
return m_studioPaletteTreeViewer->getCurrentItemPath();
|
|
Toshihiro Shimizu |
890ddd |
}
|