drag-and-drop #14
							
								
								
									
										46
									
								
								.github/workflows/all-builds.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/all-builds.yml
									
									
									
									
										vendored
									
									
								
							@ -35,27 +35,43 @@ jobs:
 | 
			
		||||
          args: install pkgconfiglite --checksum e87b5ea3c9142256af60f2d5b917aa63b571e6a0 --checksum-type sha1
 | 
			
		||||
 | 
			
		||||
      - name: Build Qtk
 | 
			
		||||
        if: matrix.os == 'windows-latest'
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON
 | 
			
		||||
          cmake --build build/ -- -j $(nproc)
 | 
			
		||||
          cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON -DQTK_DEBUG=OFF
 | 
			
		||||
          cmake --build build/ --config Release
 | 
			
		||||
 | 
			
		||||
      - name: Build Qtk
 | 
			
		||||
        if: matrix.os != 'windows-latest'
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON -DQTK_DEBUG=OFF
 | 
			
		||||
          cmake --build build/ --config Release -- -j $(nproc)
 | 
			
		||||
 | 
			
		||||
      - name: Install Qtk
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cmake --install build/
 | 
			
		||||
          cmake --install build/ --config Release
 | 
			
		||||
 | 
			
		||||
      - uses: actions/upload-artifact@v3
 | 
			
		||||
        if: always()
 | 
			
		||||
        with:
 | 
			
		||||
          name: qtk-${{ matrix.os }}
 | 
			
		||||
          name: qtk-${{ matrix.os }}-install
 | 
			
		||||
          path: install/*
 | 
			
		||||
 | 
			
		||||
      - name: Package Qtk
 | 
			
		||||
        if: matrix.os == 'windows-latest'
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cd build/
 | 
			
		||||
          cmake --build . --target package -- -j $(nproc)
 | 
			
		||||
          cmake --build . --target package --config Release
 | 
			
		||||
 | 
			
		||||
      - name: Package Qtk
 | 
			
		||||
        if: matrix.os != 'windows-latest'
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cd build/
 | 
			
		||||
          cmake --build . --target package --config Release -- -j $(nproc)
 | 
			
		||||
 | 
			
		||||
#      - name: Package Qtk Sources
 | 
			
		||||
#        if: matrix.os != 'macos-latest'
 | 
			
		||||
@ -63,13 +79,20 @@ jobs:
 | 
			
		||||
#        run: |
 | 
			
		||||
#          cmake --build build/ --target package_source
 | 
			
		||||
 | 
			
		||||
      - uses: actions/upload-artifact@v3
 | 
			
		||||
        if: ${{ failure() && matrix.os == 'windows-latest' }}
 | 
			
		||||
        with:
 | 
			
		||||
          name: qtk-packages-${{ matrix.os }}
 | 
			
		||||
          path: |
 | 
			
		||||
            build/_CPack_Packages/win64/NSIS/NSISOutput.log
 | 
			
		||||
 | 
			
		||||
      - uses: actions/upload-artifact@v3
 | 
			
		||||
        if: always()
 | 
			
		||||
        with:
 | 
			
		||||
          name: qtk-packages-${{ matrix.os }}
 | 
			
		||||
          path: |
 | 
			
		||||
            build/packages/
 | 
			
		||||
            !build/packages/_CPack_Packages/*
 | 
			
		||||
            !build/packages/_cpack_packages/*
 | 
			
		||||
 | 
			
		||||
  Build-Qtk-Assimp-Targets:
 | 
			
		||||
    strategy:
 | 
			
		||||
@ -104,9 +127,18 @@ jobs:
 | 
			
		||||
          sudo apt install libassimp-dev
 | 
			
		||||
 | 
			
		||||
      - name: Build Qtk
 | 
			
		||||
        if: matrix.os == 'windows-latest'
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cmake -B build/ ${{ matrix.cmake }} && cmake --build build/ -- -j $(nproc)
 | 
			
		||||
          cmake -B build/ ${{ matrix.cmake }} -DQTK_DEBUG=OFF
 | 
			
		||||
          cmake --build build/ --config Release
 | 
			
		||||
 | 
			
		||||
      - name: Build Qtk
 | 
			
		||||
        if: matrix.os != 'windows-latest'
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cmake -B build/ ${{ matrix.cmake }} -DQTK_DEBUG=OFF
 | 
			
		||||
          cmake --build build/ --config Release -- -j $(nproc)
 | 
			
		||||
 | 
			
		||||
  # TODO: Enable with tag only when done testing
 | 
			
		||||
#  Release-Qtk:
 | 
			
		||||
 | 
			
		||||
@ -22,12 +22,11 @@ set(CMAKE_AUTORCC ON)
 | 
			
		||||
set(CMAKE_CXX_STANDARD 17)
 | 
			
		||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
			
		||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 | 
			
		||||
#set(CMAKE_MACOSX_BUNDLE ON)
 | 
			
		||||
set(CMAKE_MACOSX_BUNDLE ON)
 | 
			
		||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
 | 
			
		||||
 | 
			
		||||
if(MSVC)
 | 
			
		||||
if(WIN32)
 | 
			
		||||
  set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)
 | 
			
		||||
  add_compile_options(-warnnotaserror)
 | 
			
		||||
  add_compile_options(/wd4131 /wd4127)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
@ -58,6 +57,12 @@ option(
 | 
			
		||||
    OFF
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if(NOT QTK_DEBUG)
 | 
			
		||||
  set(CMAKE_BUILD_TYPE Release)
 | 
			
		||||
else()
 | 
			
		||||
  set(CMAKE_BUILD_TYPE Debug)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
set(QT_DIR "$ENV{HOME}/Qt/" CACHE PATH "Path to Qt6")
 | 
			
		||||
 | 
			
		||||
# Qt Designer will look in different locations if WIN / Unix.
 | 
			
		||||
@ -116,10 +121,14 @@ if(NOT Qt6_FOUND)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Find Assimp
 | 
			
		||||
set(ASSIMP_BUILD_TESTS OFF)
 | 
			
		||||
set(ASSIMP_BUILD_TESTS OFF CACHE STRING "Do not build assimp tests." FORCE)
 | 
			
		||||
set(ASSIMP_INSTALL ON CACHE STRING "Use assimp as a submodule." FORCE)
 | 
			
		||||
set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE STRING "No warnings as errors." FORCE)
 | 
			
		||||
set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE STRING "Do not postfix assimp with -dev" FORCE)
 | 
			
		||||
set(BUILD_SHARED_LIBS OFF CACHE STRING "Build static assimp libs" FORCE)
 | 
			
		||||
set(ASSIMP_OPT_BUILD_PACKAGES ON CACHE STRING "Build static assimp libs" FORCE)
 | 
			
		||||
if(QTK_UPDATE_SUBMODULES)
 | 
			
		||||
  message(STATUS "[Qtk] Updating submodules...")
 | 
			
		||||
  set(ASSIMP_INSTALL OFF)
 | 
			
		||||
  submodule_update("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/")
 | 
			
		||||
  add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/")
 | 
			
		||||
else()
 | 
			
		||||
 | 
			
		||||
@ -47,12 +47,14 @@ if(NOT TARGET Qtk::qtk_library)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Print all QTK variables
 | 
			
		||||
get_cmake_property(VAR_NAMES VARIABLES)
 | 
			
		||||
list(FILTER VAR_NAMES INCLUDE REGEX "^Q[tT][kK]_.*$")
 | 
			
		||||
list(SORT VAR_NAMES)
 | 
			
		||||
foreach(VAR_NAME ${VAR_NAMES})
 | 
			
		||||
if (NOT Qtk_IS_TOP_LEVEL)
 | 
			
		||||
  get_cmake_property(VAR_NAMES VARIABLES)
 | 
			
		||||
  list(FILTER VAR_NAMES INCLUDE REGEX "^Q[tT][kK]_.*$")
 | 
			
		||||
  list(SORT VAR_NAMES)
 | 
			
		||||
  foreach(VAR_NAME ${VAR_NAMES})
 | 
			
		||||
    message(STATUS "[Qtk] ${VAR_NAME}=${${VAR_NAME}}")
 | 
			
		||||
endforeach()
 | 
			
		||||
  endforeach()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
find_package(Qt6 COMPONENTS Core Widgets OpenGLWidgets REQUIRED)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,9 +44,10 @@ set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/shaunrd0/qtk")
 | 
			
		||||
set(CPACK_SOURCE_IGNORE_FILES build*;install;\.git;\.github;\.idea)
 | 
			
		||||
set(CPACK_PACKAGE_DIRECTORY packages/)
 | 
			
		||||
set(CPACK_PACKAGE_CONTACT "shaunreed.com")
 | 
			
		||||
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/icon.png")
 | 
			
		||||
#set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/icon.png")
 | 
			
		||||
set(CPACK_THREADS 0)
 | 
			
		||||
 | 
			
		||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Qtk")
 | 
			
		||||
set(CPACK_COMPONENTS_ALL Unspecified)
 | 
			
		||||
# Debian
 | 
			
		||||
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_PACKAGE_HOMEPAGE_URL})
 | 
			
		||||
set(CPACK_INSTALL_SCRIPTS ${QTK_DEPLOY_SCRIPT})
 | 
			
		||||
 | 
			
		||||
@ -39,13 +39,13 @@ install(
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Install plugin library to Qt Creator for Designer plugin integration.
 | 
			
		||||
install(
 | 
			
		||||
    TARGETS qtk_plugin_library
 | 
			
		||||
    EXCLUDE_FROM_ALL
 | 
			
		||||
    LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
    ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
    RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
)
 | 
			
		||||
#install(
 | 
			
		||||
#    TARGETS qtk_plugin_library
 | 
			
		||||
#    EXCLUDE_FROM_ALL
 | 
			
		||||
#    LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#    ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#    RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#)
 | 
			
		||||
 | 
			
		||||
################################################################################
 | 
			
		||||
# Qtk Widget Collection Plugin
 | 
			
		||||
@ -66,13 +66,13 @@ install(
 | 
			
		||||
    RUNTIME DESTINATION bin
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
install(
 | 
			
		||||
    TARGETS qtk_collection
 | 
			
		||||
    EXCLUDE_FROM_ALL
 | 
			
		||||
    LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
 | 
			
		||||
    ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
    RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
 | 
			
		||||
)
 | 
			
		||||
#install(
 | 
			
		||||
#    TARGETS qtk_collection
 | 
			
		||||
#    EXCLUDE_FROM_ALL
 | 
			
		||||
#    LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
 | 
			
		||||
#    ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#    RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
 | 
			
		||||
#)
 | 
			
		||||
 | 
			
		||||
################################################################################
 | 
			
		||||
# Final Qtk Application
 | 
			
		||||
@ -124,25 +124,6 @@ qt_generate_deploy_app_script(
 | 
			
		||||
install(SCRIPT ${QTK_DEPLOY_SCRIPT})
 | 
			
		||||
 | 
			
		||||
if(WIN32)
 | 
			
		||||
  get_target_property(_qt6_qmake_location Qt6::qmake IMPORTED_LOCATION)
 | 
			
		||||
  execute_process(
 | 
			
		||||
      COMMAND "${_qt6_qmake_location}" -query QT_INSTALL_PREFIX
 | 
			
		||||
      RESULT_VARIABLE return_code
 | 
			
		||||
      OUTPUT_VARIABLE qt6_install_prefix
 | 
			
		||||
      OUTPUT_STRIP_TRAILING_WHITESPACE
 | 
			
		||||
  )
 | 
			
		||||
  file(TO_NATIVE_PATH "${qt6_install_prefix}/bin" qt6_install_prefix)
 | 
			
		||||
 | 
			
		||||
  if(TARGET Qt6::windeployqt)
 | 
			
		||||
    add_custom_command(
 | 
			
		||||
        TARGET qtk_main
 | 
			
		||||
        POST_BUILD
 | 
			
		||||
        COMMAND set PATH=%PATH%$<SEMICOLON>${qt6_install_prefix}
 | 
			
		||||
        COMMAND Qt6::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$<TARGET_FILE_DIR:qtk_main>/$<TARGET_FILE_NAME:qtk_main>"
 | 
			
		||||
    )
 | 
			
		||||
    install(DIRECTORY "${CMAKE_BINARY_DIR}/windeployqt/" DESTINATION bin)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  if(MSVC AND TARGET Qt6::qmake)
 | 
			
		||||
    set(VSUSER_FILE "${CMAKE_CURRENT_BINARY_DIR}/qtk_main.vcxproj.user")
 | 
			
		||||
    file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/extern/assimp/assimp/bin" assimp_bin)
 | 
			
		||||
 | 
			
		||||
@ -42,9 +42,7 @@ QtkWidget::QtkWidget(QWidget * parent, const QString & name, Scene * scene) :
 | 
			
		||||
  // Set the size of the depth bufer for glEnable(GL_DEPTH_TEST)
 | 
			
		||||
  format.setDepthBufferSize(16);
 | 
			
		||||
  // If QTK_DEBUG is set, enable debug context
 | 
			
		||||
#ifdef QTK_DEBUG
 | 
			
		||||
  format.setOption(QSurfaceFormat::DebugContext);
 | 
			
		||||
#endif
 | 
			
		||||
  setFormat(format);
 | 
			
		||||
  setFocusPolicy(Qt::ClickFocus);
 | 
			
		||||
}
 | 
			
		||||
@ -73,7 +71,6 @@ void QtkWidget::initializeGL() {
 | 
			
		||||
  connect(this, SIGNAL(frameSwapped()), this, SLOT(update()));
 | 
			
		||||
 | 
			
		||||
  // Initialize OpenGL debug context
 | 
			
		||||
#ifdef QTK_DEBUG
 | 
			
		||||
  mDebugLogger = new QOpenGLDebugLogger(this);
 | 
			
		||||
  if(mDebugLogger->initialize()) {
 | 
			
		||||
    qDebug() << "GL_DEBUG Debug Logger" << mDebugLogger << "\n";
 | 
			
		||||
@ -82,7 +79,6 @@ void QtkWidget::initializeGL() {
 | 
			
		||||
        SLOT(messageLogged(QOpenGLDebugMessage)));
 | 
			
		||||
    mDebugLogger->startLogging();
 | 
			
		||||
  }
 | 
			
		||||
#endif  // QTK_DEBUG
 | 
			
		||||
 | 
			
		||||
  printContextInformation();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -156,7 +156,6 @@ namespace Qtk {
 | 
			
		||||
       */
 | 
			
		||||
      void update();
 | 
			
		||||
 | 
			
		||||
#ifdef QTK_DEBUG
 | 
			
		||||
      /**
 | 
			
		||||
       * Called when the `messageLogged` signal is caught.
 | 
			
		||||
       * See definition of initializeGL()
 | 
			
		||||
@ -164,7 +163,6 @@ namespace Qtk {
 | 
			
		||||
       * @param msg The message logged.
 | 
			
		||||
       */
 | 
			
		||||
      void messageLogged(const QOpenGLDebugMessage & msg);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
      /*************************************************************************
 | 
			
		||||
@ -181,20 +179,16 @@ namespace Qtk {
 | 
			
		||||
       */
 | 
			
		||||
      static void updateCameraInput();
 | 
			
		||||
 | 
			
		||||
#ifdef QTK_DEBUG
 | 
			
		||||
      /**
 | 
			
		||||
       * Prints OpenGL context information at start of debug session.
 | 
			
		||||
       */
 | 
			
		||||
      void printContextInformation();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
      /*************************************************************************
 | 
			
		||||
       * Private Members
 | 
			
		||||
       ************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef QTK_DEBUG
 | 
			
		||||
      QOpenGLDebugLogger * mDebugLogger;
 | 
			
		||||
#endif
 | 
			
		||||
      Qtk::Scene * mScene;
 | 
			
		||||
      Qtk::DebugConsole * mConsole;
 | 
			
		||||
      bool mConsoleActive = false;
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ namespace Ui {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Qtk {
 | 
			
		||||
  class QDESIGNER_WIDGET_EXPORT ToolBox : public QDockWidget {
 | 
			
		||||
  class ToolBox : public QDockWidget {
 | 
			
		||||
      Q_OBJECT
 | 
			
		||||
 | 
			
		||||
    public:
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ namespace Ui {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Qtk {
 | 
			
		||||
  class QDESIGNER_WIDGET_EXPORT TreeView : public QDockWidget {
 | 
			
		||||
  class TreeView : public QDockWidget {
 | 
			
		||||
      Q_OBJECT
 | 
			
		||||
 | 
			
		||||
    public:
 | 
			
		||||
 | 
			
		||||
@ -91,10 +91,10 @@ install(
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
## Install qtk_library to Qt Designer to support widget plugins.
 | 
			
		||||
install(
 | 
			
		||||
    TARGETS qtk_library
 | 
			
		||||
    EXCLUDE_FROM_ALL
 | 
			
		||||
    LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
    ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
    RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
)
 | 
			
		||||
#install(
 | 
			
		||||
#    TARGETS qtk_library
 | 
			
		||||
#    EXCLUDE_FROM_ALL
 | 
			
		||||
#    LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#    ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#    RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
 | 
			
		||||
#)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user