Port to CMake from qmake, and split decoder into subdirectory
Qt 5 has had to be dropped as CMakeLists.txt uses qt_* specific commands which are implemented in Qt 6 onwards. cmake --install is only working on Linux at the moment; it installs the executable and the bundled example tti files into /usr/local/share/doc The teletext decoder with its document storage has been moved to a subdirectory with the intention of making it possible to use in other projects, but some further separation of editing stuff will be needed.
This commit is contained in:
1 parent
cf6c4855ce
commit
40fc1e38d8
59 files changed
+92
-63
No files matched your search
+3
-5
@@ -1,6 +1,4 @@
|
|||||||
.qmake.stash
|
|
||||||
moc_*
|
|
||||||
qrc_*
|
|
||||||
*.o
|
|
||||||
Makefile
|
Makefile
|
||||||
qteletextmaker
|
build*/
|
||||||
|
cmake-build-*/
|
||||||
|
.idea
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16.0)
|
||||||
|
|
||||||
|
project(qteletextmaker VERSION 1.0.0 LANGUAGES CXX)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
find_package(Qt6 COMPONENTS Core Widgets REQUIRED)
|
||||||
|
|
||||||
|
qt_standard_project_setup()
|
||||||
|
|
||||||
|
add_subdirectory(src/qteletextdecoder)
|
||||||
|
|
||||||
|
file (GLOB SOURCES src/qteletextmaker/*.cpp)
|
||||||
|
qt_add_executable(qteletextmaker ${SOURCES} src/qteletextmaker/actionicons.qrc)
|
||||||
|
|
||||||
|
target_link_libraries(qteletextmaker PRIVATE qteletextdecoder Qt::Widgets)
|
||||||
|
|
||||||
|
set_target_properties(qteletextmaker PROPERTIES
|
||||||
|
WIN32_EXECUTABLE ON
|
||||||
|
)
|
||||||
|
|
||||||
|
if(UNIX)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(DOC_INSTALL_DIR "${CMAKE_INSTALL_DOCDIR}")
|
||||||
|
set(EXAMPLES_INSTALL_DIR "${DOC_INSTALL_DIR}/examples")
|
||||||
|
else()
|
||||||
|
set(BIN_INSTALL_DIR ".")
|
||||||
|
set(DOC_INSTALL_DIR ".")
|
||||||
|
set(EXAMPLES_INSTALL_DIR "./examples")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(TARGETS qteletextmaker
|
||||||
|
BUNDLE DESTINATION .
|
||||||
|
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/README.md
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/LICENSE
|
||||||
|
DESTINATION ${DOC_INSTALL_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(DIRECTORY
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/examples/
|
||||||
|
DESTINATION ${EXAMPLES_INSTALL_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
qt_generate_deploy_app_script(
|
||||||
|
TARGET qteletextmaker
|
||||||
|
FILENAME_VARIABLE deploy_script
|
||||||
|
NO_UNSUPPORTED_PLATFORM_ERROR
|
||||||
|
)
|
||||||
|
install(SCRIPT ${deploy_script})
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# QTeletextMaker
|
# QTeletextMaker
|
||||||
QTeletextMaker is a teletext page editor with an emphasis on Level 2.5 enhancement editing, released under the GNU General Public License v3.0
|
QTeletextMaker is a teletext page editor with an emphasis on Level 2.5 enhancement editing, released under the GNU General Public License v3.0
|
||||||
|
|
||||||
It is written in C++ using the Qt 5 widget libraries but should also compile with Qt 6.
|
It is written in C++ using the Qt 6 widget libraries.
|
||||||
|
|
||||||
Features
|
Features
|
||||||
- Load and save teletext pages in .tti format.
|
- Load and save teletext pages in .tti format.
|
||||||
@@ -20,11 +20,19 @@ Although designed on and developed for Linux, the Qt libraries are cross platfor
|
|||||||
|
|
||||||
## Building
|
## Building
|
||||||
### Linux
|
### Linux
|
||||||
Install version 5 or 6 of the QtCore, QtGui and QtWidgets libraries and build headers, along with the qmake tool. Depending on how qmake is installed, type `qmake && make -j3` or `qmake5 && make -j3` or `qmake6 && make -j3` in a terminal to build, you can replace -j3 with the number of processor cores used for the compile process.
|
Install version 6 of the QtCore, QtGui and QtWidgets libraries and build headers, along with CMake.
|
||||||
|
|
||||||
The above should place the qteletextmaker executable in the same directory as the source, type `./qteletextmaker` in the terminal to launch. Some Qt installs may place the executable into a "release" directory.
|
Change into the source directory and run the following commands. -j8 can be replaced with the number of processor cores used for the compile process
|
||||||
|
```
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||||
|
make -j8
|
||||||
|
```
|
||||||
|
|
||||||
Optionally, type `make install` afterwards to place the executable into /usr/local/bin.
|
The above should place the qteletextmaker executable into the build directory created by the above commands. Within the build directory type `./qteletextmaker` in the terminal to launch.
|
||||||
|
|
||||||
|
Optionally, type `cmake --install .` to place the executable into /usr/local/bin and the example .tti files into /usr/local/share/doc/qteletextmaker.
|
||||||
|
|
||||||
## Current limitations
|
## Current limitations
|
||||||
The following X/26 enhancement triplets are not rendered by the editor, although the list is fully aware of them.
|
The following X/26 enhancement triplets are not rendered by the editor, although the list is fully aware of them.
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
QT += widgets
|
|
||||||
requires(qtConfig(filedialog))
|
|
||||||
|
|
||||||
HEADERS = decode.h \
|
|
||||||
document.h \
|
|
||||||
hamming.h \
|
|
||||||
keymap.h \
|
|
||||||
levelonecommands.h \
|
|
||||||
levelonepage.h \
|
|
||||||
loadsave.h \
|
|
||||||
mainwidget.h \
|
|
||||||
mainwindow.h \
|
|
||||||
pagebase.h \
|
|
||||||
pagex26base.h \
|
|
||||||
pagecomposelinksdockwidget.h \
|
|
||||||
pageenhancementsdockwidget.h \
|
|
||||||
pageoptionsdockwidget.h \
|
|
||||||
palettedockwidget.h \
|
|
||||||
render.h \
|
|
||||||
x26commands.h \
|
|
||||||
x26dockwidget.h \
|
|
||||||
x26menus.h \
|
|
||||||
x26model.h \
|
|
||||||
x26triplets.h \
|
|
||||||
x28commands.h
|
|
||||||
SOURCES = decode.cpp \
|
|
||||||
document.cpp \
|
|
||||||
levelonecommands.cpp \
|
|
||||||
levelonepage.cpp \
|
|
||||||
loadsave.cpp \
|
|
||||||
main.cpp \
|
|
||||||
mainwidget.cpp \
|
|
||||||
mainwindow.cpp \
|
|
||||||
pagebase.cpp \
|
|
||||||
pagex26base.cpp \
|
|
||||||
pagecomposelinksdockwidget.cpp \
|
|
||||||
pageenhancementsdockwidget.cpp \
|
|
||||||
pageoptionsdockwidget.cpp \
|
|
||||||
palettedockwidget.cpp \
|
|
||||||
render.cpp \
|
|
||||||
x26commands.cpp \
|
|
||||||
x26dockwidget.cpp \
|
|
||||||
x26menus.cpp \
|
|
||||||
x26model.cpp \
|
|
||||||
x26triplets.cpp \
|
|
||||||
x28commands.cpp
|
|
||||||
RESOURCES = qteletextmaker.qrc
|
|
||||||
|
|
||||||
# install
|
|
||||||
target.path = /usr/local/bin
|
|
||||||
INSTALLS += target
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
file (GLOB SOURCES *.cpp)
|
||||||
|
|
||||||
|
add_library(qteletextdecoder ${SOURCES} teletextfonts.qrc)
|
||||||
|
|
||||||
|
target_include_directories(qteletextdecoder PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
|
target_link_libraries(qteletextdecoder Qt::Widgets)
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include <QBitmap>
|
#include <QBitmap>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
|
#include <QDir>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
@@ -34,8 +35,10 @@ QImage *TeletextFontBitmap::s_fontImage = nullptr;
|
|||||||
|
|
||||||
TeletextFontBitmap::TeletextFontBitmap()
|
TeletextFontBitmap::TeletextFontBitmap()
|
||||||
{
|
{
|
||||||
|
Q_INIT_RESOURCE(teletextfonts);
|
||||||
|
|
||||||
if (s_instances == 0) {
|
if (s_instances == 0) {
|
||||||
s_fontBitmap = new QBitmap(":/images/teletextfont.png");
|
s_fontBitmap = new QBitmap(":/fontimages/teletextfont.png");
|
||||||
s_fontImage = new QImage(s_fontBitmap->toImage());
|
s_fontImage = new QImage(s_fontBitmap->toImage());
|
||||||
}
|
}
|
||||||
s_instances++;
|
s_instances++;
|
||||||
File renamed without changes.
@@ -0,0 +1,5 @@
|
|||||||
|
<!DOCTYPE RCC><RCC version="1.0">
|
||||||
|
<qresource>
|
||||||
|
<file>fontimages/teletextfont.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
File renamed without changes.
File renamed without changes.
@@ -1,6 +1,5 @@
|
|||||||
<!DOCTYPE RCC><RCC version="1.0">
|
<!DOCTYPE RCC><RCC version="1.0">
|
||||||
<qresource>
|
<qresource>
|
||||||
<file>images/teletextfont.png</file>
|
|
||||||
<file>images/copy.png</file>
|
<file>images/copy.png</file>
|
||||||
<file>images/cut.png</file>
|
<file>images/cut.png</file>
|
||||||
<file>images/new.png</file>
|
<file>images/new.png</file>
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
Q_INIT_RESOURCE(qteletextmaker);
|
Q_INIT_RESOURCE(actionicons);
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
QApplication::setApplicationName("QTeletextMaker");
|
QApplication::setApplicationName("QTeletextMaker");
|
||||||
QApplication::setApplicationDisplayName(QApplication::applicationName());
|
QApplication::setApplicationDisplayName(QApplication::applicationName());
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user