MainWindow.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #if !defined(Q_MOC_RUN)
  10. #include <source/ui/AssetListTabWidget.h>
  11. #include <source/ui/SeedTabWidget.h>
  12. #include <source/ui/BundleListTabWidget.h>
  13. #include <source/ui/RulesTabWidget.h>
  14. #include <AzCore/Debug/TraceMessageBus.h>
  15. #include <AzToolsFramework/UI/Logging/LogLine.h>
  16. #include <AzToolsFramework/UI/Logging/LogTableModel.h>
  17. #include <QMainWindow>
  18. #include <QMessageBox>
  19. #include <QSharedPointer>
  20. #endif
  21. namespace Ui
  22. {
  23. class MainWindow;
  24. }
  25. namespace AssetBundler
  26. {
  27. class GUIApplicationManager;
  28. class MainWindow
  29. : public QMainWindow
  30. , public AZ::Debug::TraceMessageBus::Handler
  31. {
  32. Q_OBJECT
  33. public:
  34. explicit MainWindow(AssetBundler::GUIApplicationManager* guiApplicationManager, QWidget* parent = 0);
  35. virtual ~MainWindow();
  36. void Activate();
  37. void ApplyConfig();
  38. void WriteToLog(const AZStd::string& message, AzToolsFramework::Logging::LogLine::LogType logType);
  39. void WriteToLog(const QString& message, AzToolsFramework::Logging::LogLine::LogType logType);
  40. void WriteToLog(const char* message, AzToolsFramework::Logging::LogLine::LogType logType);
  41. void WriteToLog(const char* message, const char* window, AzToolsFramework::Logging::LogLine::LogType logType);
  42. /////////////////////////////////////////////////////////
  43. // TraceMessageBus overrides
  44. bool OnPreError(const char* window, const char* fileName, int line, const char* func, const char* message) override;
  45. bool OnPreWarning(const char* window, const char* fileName, int line, const char* func, const char* message) override;
  46. bool OnPrintf(const char* window, const char* message) override;
  47. /////////////////////////////////////////////////////////
  48. public Q_SLOTS:
  49. void ShowWindow();
  50. protected:
  51. void closeEvent(QCloseEvent* event) override;
  52. private:
  53. QSharedPointer<Ui::MainWindow> m_ui;
  54. // Tabs
  55. QSharedPointer<AssetListTabWidget> m_assetListTab;
  56. QSharedPointer<SeedTabWidget> m_seedListTab;
  57. QSharedPointer<RulesTabWidget> m_rulesTab;
  58. QSharedPointer<BundleListTabWidget> m_bundleListTab;
  59. enum TabIndex
  60. {
  61. Seeds,
  62. AssetLists,
  63. Rules,
  64. Bundles,
  65. MAX
  66. };
  67. void OnSupportClicked();
  68. // Log
  69. QSharedPointer<AzToolsFramework::Logging::LogTableModel> m_logModel;
  70. void ShowLogContextMenu(const QPoint& pos);
  71. // Detecting Unsaved Changes
  72. QSharedPointer<QMessageBox> m_unsavedChangesMsgBox;
  73. bool HasUnsavedChanges();
  74. void SaveCurrentSelection();
  75. void SaveAll();
  76. AssetBundler::GUIApplicationManager* m_guiApplicationManager = nullptr;
  77. };
  78. } // namespace AssetBundler