a5d4eb5d44
The AssetBundler is a new ToolsApplication that allows users to work through the entire Asset Bundling process without ever touching a command line. * Integrating github/AssetBundler through commit 1d65018 * Asset Bundler bug fixes: platform initialization and GUI styling (#5) * fixed enabled platform initialization * fixed the cached engine root. This fixed some of my Seeds tab data issues. The default Engine Seed List appeared, and was able to display the contents on screen. * updated my notes of active bugs * changed some casing in various include lines to hopefully fix my linux build * another include fix for linux * AssetBundler GUI is now compiling on Mac * removed some things off of my todo list because the mac build fix actually fixed the visuals! everything's the right color again * removed the word Lumberyard from the bundler * Asset bundler bug fixes - Bundles, Gems, and Tests (#9) * Fixed the Bundle loading and generation problem. Turned out to be a FileWatcher issue. * turns out gem loading wasn't broken, there were just no existing SeedListFiles for any of the gems loaded by the AutomatedTesting project. I added a default SeedListFile for the PrimitiveAssets Gem. * fixed some failing AssetBundler Gem tests * Misunderstood the need to have default seed lists for asset-only gems. removing the previously created seed list file * Asset bundler bug fixes: Seeds Tab display issues and _dependencies.xml loading (#10) * Fixed the Project Source column in the Seeds tab * The AssetBundler will no longer attempt to copy a template version of the ProjectName_dependencies.xml file into your active project. However, it will throw an error if you do not have one. A follow-up ticket has been cut to address this issue. * updated the AssetBundler icon. This one matches the current style guides * PR feedback: pass a const ref instead of a value * PR feedback: safer conversion from a string_view to a QString Co-authored-by: alexpete <alexpete@amazon.com>
127 lines
5.3 KiB
C++
127 lines
5.3 KiB
C++
/*
|
|
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
|
* its licensors.
|
|
*
|
|
* For complete copyright and license terms please see the LICENSE at the root of this
|
|
* distribution (the "License"). All use of this software is governed by the License,
|
|
* or, if provided, by the license below or the license accompanying this file. Do not
|
|
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
*
|
|
*/
|
|
|
|
#include <source/ui/PlatformSelectionWidget.h>
|
|
#include <source/ui/ui_PlatformSelectionWidget.h>
|
|
|
|
#include <AzCore/std/string/string.h>
|
|
|
|
namespace AssetBundler
|
|
{
|
|
|
|
PlatformSelectionWidget::PlatformSelectionWidget(QWidget* parent)
|
|
: QWidget(parent)
|
|
{
|
|
m_ui.reset(new Ui::PlatformSelectionWidget);
|
|
m_ui->setupUi(this);
|
|
|
|
m_platformHelper.reset(new AzFramework::PlatformHelper);
|
|
|
|
m_selectedPlatforms = AzFramework::PlatformFlags::Platform_NONE;
|
|
m_partiallySelectedPlatforms = AzFramework::PlatformFlags::Platform_NONE;
|
|
}
|
|
|
|
void PlatformSelectionWidget::Init(const AzFramework::PlatformFlags& enabledPlatforms, const QString& disabledPatformMessageOverride)
|
|
{
|
|
using namespace AzFramework;
|
|
|
|
// Set up Platform Checkboxes
|
|
for (const AZStd::string_view& platformString : m_platformHelper->GetPlatforms(PlatformFlags::AllNamedPlatforms))
|
|
{
|
|
// Create the CheckBox and store what platform it maps to
|
|
QSharedPointer<QCheckBox> platformCheckBox(new QCheckBox(QString::fromUtf8(platformString.data(), platformString.size())));
|
|
m_platformCheckBoxes.push_back(platformCheckBox);
|
|
PlatformFlags currentPlatformFlag = m_platformHelper->GetPlatformFlag(platformString);
|
|
m_platformList.push_back(currentPlatformFlag);
|
|
|
|
// Add the CheckBox to the view
|
|
m_ui->platformCheckBoxLayout->addWidget(platformCheckBox.data());
|
|
|
|
// If the platform is not enabled for the current project, disable it and tell the user
|
|
if ((enabledPlatforms & currentPlatformFlag) == PlatformFlags::Platform_NONE)
|
|
{
|
|
platformCheckBox->setEnabled(false);
|
|
if (disabledPatformMessageOverride.isEmpty())
|
|
{
|
|
platformCheckBox->setToolTip(tr("This platform is not enabled for the current project."));
|
|
}
|
|
else
|
|
{
|
|
platformCheckBox->setToolTip(disabledPatformMessageOverride);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
connect(platformCheckBox.data(), &QCheckBox::stateChanged, this, &PlatformSelectionWidget::OnPlatformSelectionChanged);
|
|
}
|
|
}
|
|
}
|
|
|
|
void PlatformSelectionWidget::SetSelectedPlatforms(const AzFramework::PlatformFlags& selectedPlatforms, const AzFramework::PlatformFlags& partiallySelectedPlatforms)
|
|
{
|
|
m_selectedPlatforms = AzFramework::PlatformFlags::Platform_NONE;
|
|
m_partiallySelectedPlatforms = AzFramework::PlatformFlags::Platform_NONE;
|
|
for (int checkBoxIndex = 0; checkBoxIndex < m_platformCheckBoxes.size(); ++checkBoxIndex)
|
|
{
|
|
AzFramework::PlatformFlags checkBoxPlatform = m_platformList[checkBoxIndex];
|
|
bool isSelected = (checkBoxPlatform & selectedPlatforms) != AzFramework::PlatformFlags::Platform_NONE;
|
|
m_platformCheckBoxes[checkBoxIndex]->setChecked(isSelected);
|
|
if (isSelected)
|
|
{
|
|
m_selectedPlatforms |= checkBoxPlatform;
|
|
}
|
|
|
|
// Set the check status to Qt::PartiallyChecked when some of the selected items support the current platform
|
|
bool isPartiallySelected = (checkBoxPlatform & partiallySelectedPlatforms) != AzFramework::PlatformFlags::Platform_NONE;
|
|
if (isPartiallySelected)
|
|
{
|
|
m_platformCheckBoxes[checkBoxIndex]->setCheckState(Qt::PartiallyChecked);
|
|
m_partiallySelectedPlatforms |= checkBoxPlatform;
|
|
}
|
|
}
|
|
|
|
emit PlatformsSelected(m_selectedPlatforms, m_partiallySelectedPlatforms);
|
|
}
|
|
|
|
AzFramework::PlatformFlags PlatformSelectionWidget::GetSelectedPlatforms()
|
|
{
|
|
return m_selectedPlatforms;
|
|
}
|
|
|
|
AzFramework::PlatformFlags PlatformSelectionWidget::GetPartiallySelectedPlatforms()
|
|
{
|
|
return m_partiallySelectedPlatforms;
|
|
}
|
|
|
|
void PlatformSelectionWidget::OnPlatformSelectionChanged()
|
|
{
|
|
m_selectedPlatforms = AzFramework::PlatformFlags::Platform_NONE;
|
|
m_partiallySelectedPlatforms = AzFramework::PlatformFlags::Platform_NONE;
|
|
for (int checkBoxIndex = 0; checkBoxIndex < m_platformCheckBoxes.size(); ++checkBoxIndex)
|
|
{
|
|
if (m_platformCheckBoxes[checkBoxIndex]->checkState() == Qt::Checked)
|
|
{
|
|
m_selectedPlatforms |= m_platformList[checkBoxIndex];
|
|
}
|
|
else if (m_platformCheckBoxes[checkBoxIndex]->checkState() == Qt::PartiallyChecked)
|
|
{
|
|
m_partiallySelectedPlatforms |= m_platformList[checkBoxIndex];
|
|
}
|
|
}
|
|
|
|
emit PlatformsSelected(m_selectedPlatforms, m_partiallySelectedPlatforms);
|
|
}
|
|
|
|
} // namespace AssetBundler
|
|
|
|
#include <source/ui/moc_PlatformSelectionWidget.cpp>
|