diff options
-rw-r--r-- | README.md | 8 | ||||
l--------- | demo-infinite-outliner/.clang-format | 1 | ||||
l--------- | demo-infinite-outliner/.clang-tidy | 1 | ||||
-rw-r--r-- | demo-infinite-outliner/CMakeLists.txt | 41 | ||||
-rw-r--r-- | demo-infinite-outliner/README.md | 2 | ||||
-rw-r--r-- | demo-infinite-outliner/locale/hollet_en_US.ts | 3 | ||||
-rw-r--r-- | demo-infinite-outliner/qml/MainWindow.qml | 8 | ||||
-rw-r--r-- | demo-infinite-outliner/src/main.cpp | 35 |
8 files changed, 99 insertions, 0 deletions
@@ -3,4 +3,12 @@ ## Purpose This tool is designed be a general purpose knowledge database. The original intention to build a writing system that supports "keywords" that can be freely refactored (renamed, merged, splitted), and can have loosely structured information attached to them. +## Project structure +- `common/` contains common code +- `demo-*/` contains demo applications + - `demo-infinite-outliner` contains an infinite outliner app, as well as the first prototype of a custom text editor in QtQuick +- `server-v1` contains EpistmoolServer v1, written in C++ with QtCore +- `server-v2` contains EpistmoolServer v2, written in F# +- `ui.qt` contains EpistmoolUI, written in QtQuick + ## Build instructions diff --git a/demo-infinite-outliner/.clang-format b/demo-infinite-outliner/.clang-format new file mode 120000 index 0000000..9afe8e5 --- /dev/null +++ b/demo-infinite-outliner/.clang-format @@ -0,0 +1 @@ +../common/c++/.clang-format
\ No newline at end of file diff --git a/demo-infinite-outliner/.clang-tidy b/demo-infinite-outliner/.clang-tidy new file mode 120000 index 0000000..d2ba648 --- /dev/null +++ b/demo-infinite-outliner/.clang-tidy @@ -0,0 +1 @@ +../common/c++/.clang-tidy
\ No newline at end of file diff --git a/demo-infinite-outliner/CMakeLists.txt b/demo-infinite-outliner/CMakeLists.txt new file mode 100644 index 0000000..c398cec --- /dev/null +++ b/demo-infinite-outliner/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.16) +project(Hollet VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Qt6 6.2 COMPONENTS Quick Sql REQUIRED) + +file(GLOB_RECURSE appHollet_SRC_HPP_FILES src/*.hpp) +file(GLOB_RECURSE appHollet_SRC_CPP_FILES src/*.cpp) +qt_add_executable(appHollet + ${appHollet_SRC_HPP_FILES} + ${appHollet_SRC_CPP_FILES} +) + +file(GLOB_RECURSE appHollet_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} qml/*.qml) +qt_add_qml_module(appHollet + URI QCplt + VERSION 1.0 + QML_FILES ${appHollet_QML_FILES} +) + +set_target_properties(appHollet PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER rtk0cium0001.github.io + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +target_include_directories(appHollet PUBLIC src) +target_compile_definitions(appHollet +PRIVATE + $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG> +) +target_link_libraries(appHollet +PRIVATE + Qt6::Quick + Qt6::Sql +) diff --git a/demo-infinite-outliner/README.md b/demo-infinite-outliner/README.md new file mode 100644 index 0000000..cfca136 --- /dev/null +++ b/demo-infinite-outliner/README.md @@ -0,0 +1,2 @@ +# Infinite Outliner Demo - "Hollet" +This folder contains the demo application of an infinite outliner app, codenamed "hollet" (which stands for **h**n**O**smium0001's Bu**llet** System) diff --git a/demo-infinite-outliner/locale/hollet_en_US.ts b/demo-infinite-outliner/locale/hollet_en_US.ts new file mode 100644 index 0000000..edd0d34 --- /dev/null +++ b/demo-infinite-outliner/locale/hollet_en_US.ts @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en_US"></TS> diff --git a/demo-infinite-outliner/qml/MainWindow.qml b/demo-infinite-outliner/qml/MainWindow.qml new file mode 100644 index 0000000..41424f8 --- /dev/null +++ b/demo-infinite-outliner/qml/MainWindow.qml @@ -0,0 +1,8 @@ +import QtQuick + +Window { + width: 640 + height: 480 + visible: true + title: qsTr("Hello World") +} diff --git a/demo-infinite-outliner/src/main.cpp b/demo-infinite-outliner/src/main.cpp new file mode 100644 index 0000000..249faeb --- /dev/null +++ b/demo-infinite-outliner/src/main.cpp @@ -0,0 +1,35 @@ +#include <QGuiApplication> +#include <QQmlApplicationEngine> +#include <QLocale> +#include <QTranslator> + +int main(int argc, char* argv[]) +{ + QGuiApplication app(argc, argv); + + QTranslator translator; + QStringList uiLanguages = QLocale::system().uiLanguages(); + for (const QString& locale : uiLanguages) { + const QString baseName = "hollet_" + QLocale(locale).name(); + if (translator.load(":/i18n/" + baseName)) { + app.installTranslator(&translator); + break; + } + } + + QQmlApplicationEngine engine; + QUrl url(u"qrc:/Hollet/qml/MainWindow.qml"_qs); + QObject::connect( + &engine, + &QQmlApplicationEngine::objectCreated, + &app, + [url](QObject* obj, const QUrl& objUrl) { + if (!obj && url == objUrl) { + QCoreApplication::exit(-1); + } + }, + Qt::QueuedConnection); + engine.load(url); + + return app.exec(); +} |