Improve UI #13
|
@ -13,11 +13,11 @@ jobs:
|
|||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/"
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
|
||||
- os: windows-latest
|
||||
cmake: -DCMAKE_PREFIX_PATH="D:/a/qtk/qtk/Qt/6.3.1/mingw81_64/"
|
||||
cmake: -DCMAKE_PREFIX_PATH="D:/a/qtk/qtk/Qt/6.5.0/mingw81_64/"
|
||||
- os: macos-latest
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/"
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
|
@ -26,19 +26,47 @@ jobs:
|
|||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: '6.3.1'
|
||||
version: '6.5.0'
|
||||
|
||||
- name: Chocolatey Action
|
||||
if: matrix.os == 'windows-latest'
|
||||
uses: crazy-max/ghaction-chocolatey@v2.0.0
|
||||
uses: crazy-max/ghaction-chocolatey@v2
|
||||
with:
|
||||
args: install pkgconfiglite --checksum e87b5ea3c9142256af60f2d5b917aa63b571e6a0 --checksum-type sha1
|
||||
args: install pkgconfiglite
|
||||
|
||||
- name: Build Qtk
|
||||
shell: bash
|
||||
run: |
|
||||
cmake -S . -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON && cmake --build build/ \
|
||||
--target qtk-main
|
||||
cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON
|
||||
cmake --build build/
|
||||
|
||||
- name: Package Qtk
|
||||
shell: bash
|
||||
run: |
|
||||
cmake --build build/ --target package
|
||||
|
||||
- name: Package Qtk Sources
|
||||
if: matrix.os != 'macos-latest'
|
||||
shell: bash
|
||||
run: |
|
||||
cmake --build build/ --target package_source
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qtk-packages-${{ matrix.os }}
|
||||
path: |
|
||||
build/packages/
|
||||
!build/packages/_CPack_Packages/*
|
||||
|
||||
- name: Install Qtk
|
||||
shell: bash
|
||||
run: |
|
||||
cmake --install build/
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qtk-${{ matrix.os }}
|
||||
path: install/*
|
||||
|
||||
Build-Qtk-Assimp-Targets:
|
||||
strategy:
|
||||
|
@ -47,9 +75,9 @@ jobs:
|
|||
os: [ubuntu-latest, macos-latest]
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/"
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
|
||||
- os: macos-latest
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/" -DASSIMP_NEW_INTERFACE=ON
|
||||
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/" -DASSIMP_NEW_INTERFACE=ON
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
|
@ -58,7 +86,7 @@ jobs:
|
|||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: '6.3.1'
|
||||
version: '6.5.0'
|
||||
|
||||
- name: Install Assimp MacOS
|
||||
if: matrix.os == 'macos-latest'
|
||||
|
@ -75,5 +103,49 @@ jobs:
|
|||
- name: Build Qtk
|
||||
shell: bash
|
||||
run: |
|
||||
cmake -S . -B build/ ${{ matrix.cmake }} && cmake --build build/ \
|
||||
--target qtk-main
|
||||
cmake -B build/ ${{ matrix.cmake }} && cmake --build build/ --target qtk-main
|
||||
|
||||
# TODO: Enable with tag only when done testing
|
||||
# Release-Qtk:
|
||||
# needs: Build-Qtk
|
||||
# if: "always()"
|
||||
# strategy:
|
||||
# fail-fast: false
|
||||
# matrix:
|
||||
# os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
# include:
|
||||
# - os: ubuntu-latest
|
||||
# cqt: CQtDeployer.deb
|
||||
# url: https://github.com/QuasarApp/CQtDeployer/releases/download/v1.6.2277/CQtDeployer_1.6.2277.ecc6eed_Linux_x86_64.deb
|
||||
# qmake: /home/runner/work/qtk/Qt/6.5.0/gcc_64/bin/qmake
|
||||
# - os: windows-latest
|
||||
# cqt: CQtDeployer.exe
|
||||
# url: https://github.com/QuasarApp/CQtDeployer/releases/download/v1.6.2277/CQtDeployer_1.6.2277.ecc6eed_Windows_AMD64.exe
|
||||
# qmake: D:/a/qtk/qtk/Qt/6.5.0/mingw81_64/bin/qmake
|
||||
# - os: macos-latest
|
||||
# cqt: CQtDeployer.run
|
||||
# url: https://github.com/QuasarApp/CQtDeployer/releases/download/v1.6.2277/CQtDeployer_1.6.2277.ecc6eed_Linux_x86_64.run
|
||||
# qmake: /home/runner/work/qtk/Qt/6.5.0/gcc_64/bin/qmake
|
||||
# runs-on: ${{ matrix.os }}
|
||||
#
|
||||
# steps:
|
||||
# - uses: actions/download-artifact@v3
|
||||
# with:
|
||||
# name: qtk-${{ matrix.os }}
|
||||
#
|
||||
# - name: Install Qt
|
||||
# uses: jurplel/install-qt-action@v2
|
||||
# with:
|
||||
# version: '6.5.0'
|
||||
#
|
||||
# - name: Package Qtk
|
||||
# shell: bash
|
||||
# run: |
|
||||
# wget -O ${{ matrix.cqt }} ${{ matrix.url }}
|
||||
# apt install -y ./${{ matrix.cqt }}
|
||||
# cqtdeployer -bin qtk-main -qmake ${{ matrix.qmake }}
|
||||
#
|
||||
# - uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: qtk-installer-${{ matrix.os }}
|
||||
# path: DistributionKit/
|
||||
|
|
|
@ -55,7 +55,7 @@ option(
|
|||
OFF
|
||||
)
|
||||
|
||||
set(QT_DIR "$ENV{HOME}/Code/Clones/Qt/" CACHE PATH "Path to Qt6")
|
||||
set(QT_DIR "$ENV{HOME}/Qt/" CACHE PATH "Path to Qt6")
|
||||
|
||||
# Qt Designer will look in different locations if WIN / Unix.
|
||||
# These paths are for using Qt Designer integrated within Qt Creator.
|
||||
|
@ -70,7 +70,7 @@ else()
|
|||
endif()
|
||||
|
||||
# This should be set to your Qt6 installation directory.
|
||||
set(QT_INSTALL_DIR "${QT_DIR}/6.3.1/gcc_64/" CACHE PATH "Path to Qt6 install")
|
||||
set(QT_INSTALL_DIR "${QT_DIR}/6.5.0/gcc_64" CACHE PATH "Path to Qt6 install")
|
||||
# Point CMAKE_PREFIX_PATH to Qt6 install directory
|
||||
# If Qtk is built within Qt Creator this is not required.
|
||||
list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}")
|
||||
|
@ -98,6 +98,7 @@ endforeach()
|
|||
################################################################################
|
||||
# Find Qt
|
||||
find_package(Qt6 COMPONENTS Core UiPlugin OpenGLWidgets)
|
||||
qt_standard_project_setup()
|
||||
if(NOT Qt6_FOUND)
|
||||
message(
|
||||
SEND_ERROR "[Qtk] Error: Unable to find Qt6 at CMAKE_PREFIX_PATH: "
|
||||
|
@ -113,6 +114,8 @@ endif()
|
|||
# Find Assimp
|
||||
if(QTK_UPDATE_SUBMODULES)
|
||||
message(STATUS "[Qtk] Updating submodules...")
|
||||
set(ASSIMP_BUILD_TESTS OFF)
|
||||
set(ASSIMP_INSTALL OFF)
|
||||
submodule_update("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/")
|
||||
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/")
|
||||
else()
|
||||
|
@ -127,37 +130,3 @@ endif()
|
|||
# Qtk
|
||||
################################################################################
|
||||
add_subdirectory(src)
|
||||
|
||||
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)
|
||||
file(WRITE ${VSUSER_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
file(APPEND ${VSUSER_FILE} "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n")
|
||||
file(APPEND ${VSUSER_FILE} " <PropertyGroup>\n")
|
||||
file(APPEND ${VSUSER_FILE} " <LocalDebuggerEnvironment>Path=$(SolutionDir)\\lib\\$(Configuration);${qt6_install_prefix};${assimp_bin};$(Path)\n")
|
||||
file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>\n")
|
||||
file(APPEND ${VSUSER_FILE} " <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n")
|
||||
file(APPEND ${VSUSER_FILE} " </PropertyGroup>\n")
|
||||
file(APPEND ${VSUSER_FILE} "</Project>\n")
|
||||
endif()
|
||||
endif()
|
||||
|
|
12
README.md
12
README.md
|
@ -19,6 +19,7 @@ Key features that are planned:
|
|||
* Save / load for scene data. The current inheritance model is temporary.
|
||||
* Basic text editor for quickly modifying shaders attached to objects.
|
||||
* Shader / object properties panel to modify related settings.
|
||||
* Reduce size of application resources and git references.
|
||||
|
||||
The Qtk desktop application provides a model loader using [Assimp](https://assimp.org/) within a Qt widget application.
|
||||
|
||||
|
@ -33,8 +34,8 @@ and see some examples in the `resources/models/` directory.
|
|||
Qtk was developed and tested using CLion and [Qt Creator](https://github.com/qt-creator/qt-creator).
|
||||
Simply open the root `CMakeLists.txt` with either of these editors and configurations will be loaded.
|
||||
|
||||
This project has been ported to Qt6, which is not yet available in Ubuntu apt repositories.
|
||||
To run this project, you will *need* to install [Qt6 Open Source Binaries](https://www.qt.io/download-qt-installer) for your system.
|
||||
This project has been ported to **Qt 6.5.0**, which is not yet available in Ubuntu apt repositories.
|
||||
To run this project, you will *need* to install [Qt6 Open Source Binaries](https://www.qt.io/download-qt-installer) for your system, **version 6.5.0** or later.
|
||||
Be sure to take note of the Qt6 installation directory, as we will need it to correctly set our `CMAKE_PREFIX_PATH` in the next steps.
|
||||
|
||||
#### Linux
|
||||
|
@ -101,6 +102,13 @@ If you see a small triangle floating by a model it represents the light source
|
|||
that is being used for the shader rendering the model. These appear on models
|
||||
using phong, specular, and diffuse lighting techniques.
|
||||
|
||||
Object names can be double-clicked in the tree view panel for quick camera
|
||||
navigation. All panels and toolbars are dockable widgets that can be popped out
|
||||
and reorganized as needed. Panels can be stacked to create a docked widget with
|
||||
tabs. The central widget that provides the camera view into the scene cannot be
|
||||
detached from the main window in this way. See the `View` menu to enable debug
|
||||
console widgets for open scenes or reopen previously closed panels.
|
||||
|
||||
![](resources/screenshot.png)
|
||||
|
||||
Spartan with no normals -
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit bd64cc88dff17f118ecf32ebcbacaf566f6b6449
|
||||
Subproject commit eb328ce69dd7b06977aed125e967a41e835b8431
|
Binary file not shown.
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 316 KiB |
|
@ -41,4 +41,11 @@ set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
|
|||
set(CPACK_PACKAGE_VENDOR "Shaun Reed")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Qt OpenGL 3D graphics library.")
|
||||
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/)
|
||||
if(WIN32)
|
||||
set(CPACK_SOURCE_GENERATOR ZIP)
|
||||
else()
|
||||
set(CPACK_SOURCE_GENERATOR TGZ)
|
||||
endif()
|
||||
include(CPack)
|
||||
|
|
|
@ -11,13 +11,16 @@
|
|||
# Create a library of widgets used to build Qtk GUI
|
||||
set(
|
||||
QTK_PLUGIN_LIBRARY_SOURCES
|
||||
qtkwidget.cpp qtkwidget.h
|
||||
qtkwidget.cpp
|
||||
debugconsole.cpp debugconsole.ui
|
||||
toolbox.cpp toolbox.ui
|
||||
treeview.cpp treeview.ui
|
||||
qtkmainwindow.cpp qtkmainwindow.ui
|
||||
)
|
||||
set(
|
||||
QTK_PLUGIN_LIBRARY_HEADERS
|
||||
qtkmainwindow.h
|
||||
qtkwidget.h
|
||||
debugconsole.h
|
||||
toolbox.h
|
||||
treeview.h
|
||||
|
@ -72,12 +75,9 @@ install(
|
|||
set(
|
||||
QTK_APP_SOURCES
|
||||
examplescene.cpp examplescene.h
|
||||
qtkmainwindow.cpp qtkmainwindow.ui
|
||||
qtkmainwindow.h
|
||||
main.cpp
|
||||
)
|
||||
# TODO: Qtk library should not depend on these resources. (qtkapi.h)
|
||||
# Or should some resources be installed somewhere?
|
||||
|
||||
qt6_add_resources(QTK_APP_SOURCES "${QTK_RESOURCES}/resources.qrc")
|
||||
configure_file(
|
||||
resources.h.in
|
||||
|
@ -102,3 +102,44 @@ install(
|
|||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION bin/lib
|
||||
)
|
||||
|
||||
qt_generate_deploy_app_script(
|
||||
TARGET qtk-main
|
||||
FILENAME_VARIABLE deploy_script
|
||||
NO_UNSUPPORTED_PLATFORM_ERROR
|
||||
)
|
||||
install(SCRIPT ${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)
|
||||
file(WRITE ${VSUSER_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
file(APPEND ${VSUSER_FILE} "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n")
|
||||
file(APPEND ${VSUSER_FILE} " <PropertyGroup>\n")
|
||||
file(APPEND ${VSUSER_FILE} " <LocalDebuggerEnvironment>Path=$(SolutionDir)\\lib\\$(Configuration);${qt6_install_prefix};${assimp_bin};$(Path)\n")
|
||||
file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>\n")
|
||||
file(APPEND ${VSUSER_FILE} " <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n")
|
||||
file(APPEND ${VSUSER_FILE} " </PropertyGroup>\n")
|
||||
file(APPEND ${VSUSER_FILE} "</Project>\n")
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
|
||||
##############################################################################*/
|
||||
|
||||
#include "examplescene.h"
|
||||
#include "qtkmainwindow.h"
|
||||
#include "examplescene.h"
|
||||
#include "ui_qtkmainwindow.h"
|
||||
|
||||
MainWindow * MainWindow::mainWindow_ = Q_NULLPTR;
|
||||
|
|
|
@ -27,7 +27,9 @@
|
|||
* This cannot be defined within any namespace, but can be called by ctors.
|
||||
* See object.h for example.
|
||||
*/
|
||||
inline void initResources() { Q_INIT_RESOURCE(resources); }
|
||||
inline void initResources() {
|
||||
Q_INIT_RESOURCE(resources);
|
||||
}
|
||||
|
||||
namespace Qtk {
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue