diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d10be4c..9b12b06 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,12 @@ jobs: build: if: contains(github.event.head_commit.message, 'deploy+') == false runs-on: "ubuntu-latest" + # Ubuntu 20.04 doesn't have fcitx 5.0.5 development library which we require. + # So we have to run our CI under Ubuntu 21.04 docker image. + container: + image: "ubuntu:21.04" + env: + DEBIAN_FRONTEND: noninteractive strategy: matrix: env: @@ -23,9 +29,9 @@ jobs: with: submodules: recursive - name: update-system - run: sudo apt-get update -qq + run: apt-get update -qq - name: install-deps - run: sudo apt-get install libibus-1.0-dev libzstd-dev qt5-default rustc cargo + run: apt-get -y install build-essential clang cmake rustc cargo libibus-1.0-dev libfcitx5core-dev libzstd-dev qtbase5-dev qtbase5-dev-tools - name: make env: ${{ matrix.env }} run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index ab6a32e..d7b9e80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,7 +72,7 @@ if(OS_LINUX) endif() if (ENABLE_FCITX) - find_package(Fcitx5Core 5.0.6 REQUIRED) + find_package(Fcitx5Core 5.0.5 REQUIRED) endif() ## Find zstd ## pkg_check_modules(ZSTD REQUIRED libzstd) diff --git a/src/engine/common/CMakeLists.txt b/src/engine/common/CMakeLists.txt index e5381f0..e116bfb 100644 --- a/src/engine/common/CMakeLists.txt +++ b/src/engine/common/CMakeLists.txt @@ -1,3 +1,5 @@ +configure_file(${CMAKE_SOURCE_DIR}/data/openbangla-keyboard.desktop.in ${CMAKE_BINARY_DIR}/data/openbangla-keyboard.desktop) + ## Install things install(FILES ${CMAKE_SOURCE_DIR}/data/32.png DESTINATION ${PROJECT_DATADIR}/icons diff --git a/src/engine/fcitx/openbangla-addon.conf b/src/engine/fcitx/openbangla-addon.conf index 1b0ac5a..89d15bc 100644 --- a/src/engine/fcitx/openbangla-addon.conf +++ b/src/engine/fcitx/openbangla-addon.conf @@ -7,4 +7,4 @@ OnDemand=True Configurable=True [Dependencies] -0=core:5.0.6 +0=core:5.0.5 diff --git a/src/engine/fcitx/openbangla.cpp b/src/engine/fcitx/openbangla.cpp index 65294e7..b79e4f9 100644 --- a/src/engine/fcitx/openbangla.cpp +++ b/src/engine/fcitx/openbangla.cpp @@ -18,7 +18,6 @@ */ #include "openbangla.h" #include "keycode.h" -#include "riti.h" #include #include #include @@ -36,7 +35,7 @@ namespace fcitx { class OpenBanglaState : public InputContextProperty { public: OpenBanglaState(OpenBanglaEngine *engine, InputContext &ic) - : engine_(engine), ic_(&ic), ctx_(riti_context_new()) {} + : engine_(engine), ic_(&ic), ctx_(riti_context_new_with_config(engine->getRitiConfig())) {} ~OpenBanglaState() {} @@ -176,7 +175,8 @@ class OpenBanglaState : public InputContextProperty { auto ctx = ctx_.get(); if (!riti_context_ongoing_input_session(ctx)) { - riti_context_update_engine(ctx); + engine_->reloadConfig(); + riti_context_update_engine(ctx, engine_->getRitiConfig()); } auto candidateList = ic_->inputPanel().candidateList(); // At first, handle the special keys. @@ -334,7 +334,7 @@ class OpenBanglaState : public InputContextProperty { }; OpenBanglaEngine::OpenBanglaEngine(Instance *instance) - : instance_(instance), factory_([this](InputContext &ic) { + : instance_(instance), cfg_(riti_config_new()), factory_([this](InputContext &ic) { return new OpenBanglaState(this, ic); }) { if (!fs::makePath(stringutils::joinPath( @@ -387,8 +387,10 @@ void OpenBanglaEngine::populateConfig(const RawConfig &config) { booleanValue(config, "settings/PreviewWin\\IncludeEnglishPhonetic", true); const bool showPrevWinFixed = booleanValue(config, "settings/FixedLayout\\ShowPrevWin", true); + const bool includeEnglishFixed = + booleanValue(config, "settings/PreviewWin\\IncludeEnglishFixed", true); const bool autoVowelFormFixed = - booleanValue(config, "settings/ixedLayout\\AutoVowelForm", true); + booleanValue(config, "settings/FixedLayout\\AutoVowelForm", true); const bool autoChandraPosFixed = booleanValue(config, "settings/FixedLayout\\AutoChandraPos", true); const bool traditionalKarFixed = @@ -397,19 +399,19 @@ void OpenBanglaEngine::populateConfig(const RawConfig &config) { booleanValue(config, "settings/FixedLayout\\OldReph", true); const bool numberPadFixed = booleanValue(config, "settings/FixedLayout\\NumberPad", true); - setenv("RITI_LAYOUT_FILE", layoutPath.data(), 1); - setenv("RITI_PHONETIC_DATABASE_ON", showCWPhonetic ? "true" : "false", 1); - setenv("RITI_PHONETIC_INCLUDE_ENGLISH", - includeEnglishPrevWin ? "true" : "false", 1); - setenv("RITI_DATABASE_DIR", "/usr/share/openbangla-keyboard/data", 1); - setenv("RITI_LAYOUT_FIXED_DATABASE_ON", showPrevWinFixed ? "true" : "false", - 1); - setenv("RITI_LAYOUT_FIXED_VOWEL", autoVowelFormFixed ? "true" : "false", 1); - setenv("RITI_LAYOUT_FIXED_CHANDRA", autoChandraPosFixed ? "true" : "false", - 1); - setenv("RITI_LAYOUT_FIXED_KAR", traditionalKarFixed ? "true" : "false", 1); - setenv("RITI_LAYOUT_FIXED_OLD_REPH", oldReph ? "true" : "false", 1); - setenv("RITI_LAYOUT_FIXED_NUMBERPAD", numberPadFixed ? "true" : "false", 1); + + riti_config_set_layout_file(cfg_.get(), layoutPath.data()); + riti_config_set_phonetic_suggestion(cfg_.get(), showCWPhonetic); + riti_config_set_phonetic_include_english(cfg_.get(), includeEnglishPrevWin); + riti_config_set_database_dir(cfg_.get(), "/usr/share/openbangla-keyboard/data"); + riti_config_set_fixed_suggestion(cfg_.get(), showPrevWinFixed); + riti_config_set_fixed_include_english(cfg_.get(), includeEnglishFixed); + riti_config_set_fixed_auto_vowel(cfg_.get(), autoVowelFormFixed); + riti_config_set_fixed_auto_chandra(cfg_.get(), autoChandraPosFixed); + riti_config_set_fixed_traditional_kar(cfg_.get(), traditionalKarFixed); + riti_config_set_fixed_old_reph(cfg_.get(), oldReph); + riti_config_set_fixed_numpad(cfg_.get(), numberPadFixed); + candidateWinHorizontal_ = booleanValue(config, "settings/CandidateWin\\Horizontal", true); enterKeyClosesPrevWin_ = diff --git a/src/engine/fcitx/openbangla.h b/src/engine/fcitx/openbangla.h index b3660fd..1a62f5b 100644 --- a/src/engine/fcitx/openbangla.h +++ b/src/engine/fcitx/openbangla.h @@ -19,6 +19,7 @@ #ifndef _FCITX5_OPENBANGLA_OPENBANGLA_H_ #define _FCITX5_OPENBANGLA_OPENBANGLA_H_ +#include "riti.h" #include #include #include @@ -36,7 +37,7 @@ class OpenBanglaState; FCITX_CONFIGURATION(OpenBanglaConfig, ExternalOption config{this, "OpenBanglaKeyboard", _("OpenBangla Keyboard"), - PROJECT_DATADIR "/openbangla-gui"};); + LIBEXECDIR "/openbangla-keyboard/openbangla-gui"};); class OpenBanglaEngine final : public InputMethodEngine { public: @@ -53,6 +54,8 @@ class OpenBanglaEngine final : public InputMethodEngine { const Configuration *getConfig() const override { return &config_; } + auto getRitiConfig() const { return cfg_.get(); } + auto candidateWinHorizontal() const { return candidateWinHorizontal_; } auto enterKeyClosesPrevWin() const { return enterKeyClosesPrevWin_; } @@ -61,6 +64,7 @@ class OpenBanglaEngine final : public InputMethodEngine { Instance *instance_; OpenBanglaConfig config_; + UniqueCPtr cfg_; FactoryFor factory_; int64_t lastConfigTimestamp_ = std::numeric_limits::min(); bool candidateWinHorizontal_ = true; diff --git a/src/engine/ibus/CMakeLists.txt b/src/engine/ibus/CMakeLists.txt index c214ce0..37890bb 100644 --- a/src/engine/ibus/CMakeLists.txt +++ b/src/engine/ibus/CMakeLists.txt @@ -2,7 +2,6 @@ include_directories(../riti/include ../../shared ${IBUS_INCLUDE_DIRS}) add_executable(ibus-engine-openbangla main.cpp) target_link_libraries(ibus-engine-openbangla riti libShared Qt5::Core ${IBUS_LIBRARIES} dl pthread) -## Configure the files configure_file(${CMAKE_SOURCE_DIR}/data/openbangla.xml.in ${CMAKE_BINARY_DIR}/data/openbangla.xml) install(FILES ${CMAKE_BINARY_DIR}/data/openbangla.xml diff --git a/src/engine/riti b/src/engine/riti index 719e4aa..1b1d965 160000 --- a/src/engine/riti +++ b/src/engine/riti @@ -1 +1 @@ -Subproject commit 719e4aa9e7c8c9759189571737d6f438e38b19ef +Subproject commit 1b1d965d2100b702e6a6ce17bac6f9d7f1792d2a