/***
Olive - Non-Linear Video Editor
Copyright (C) 2019 Olive Team
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
***/
#include "factory.h"
#include "audio/pan/pan.h"
#include "audio/volume/volume.h"
#include "block/clip/clip.h"
#include "block/gap/gap.h"
#include "block/transition/externaltransition.h"
#include "distort/transform/transform.h"
#include "input/media/video/video.h"
#include "input/media/audio/audio.h"
#include "input/time/timeinput.h"
#include "math/math/math.h"
#include "math/trigonometry/trigonometry.h"
#include "output/track/track.h"
#include "output/viewer/viewer.h"
#include "external.h"
OLIVE_NAMESPACE_ENTER
QList NodeFactory::library_;
void NodeFactory::Initialize()
{
Destroy();
// Add internal types
for (int i=0;i(i)));
}
library_.append(new ExternalNode(":/shaders/blur.xml"));
library_.append(new ExternalNode(":/shaders/opacity.xml"));
library_.append(new ExternalNode(":/shaders/solid.xml"));
library_.append(new ExternalNode(":/shaders/stroke.xml"));
library_.append(new ExternalNode(":/shaders/alphaover.xml"));
library_.append(new ExternalNode(":/shaders/dropshadow.xml"));
library_.append(new ExternalTransition(":/shaders/crossdissolve.xml"));
library_.append(new ExternalTransition(":/shaders/diptoblack.xml"));
}
void NodeFactory::Destroy()
{
qDeleteAll(library_);
library_.clear();
}
Menu *NodeFactory::CreateMenu()
{
Menu* menu = new Menu();
menu->setToolTipsVisible(true);
for (int i=0;iRetranslate();
QStringList path = n->Category().split('/');
Menu* destination = menu;
// Find destination menu based on category hierarchy
foreach (const QString& dir_name, path) {
// Ignore an empty directory
if (dir_name.isEmpty()) {
continue;
}
// See if a menu with this dir_name already exists
bool found_cat = false;
QList menu_actions = destination->actions();
foreach (QAction* action, menu_actions) {
if (action->menu() && action->menu()->title() == dir_name) {
destination = static_cast