diff --git a/server/.clangd b/server/.clangd index a3e38373..c8ae8d59 100644 --- a/server/.clangd +++ b/server/.clangd @@ -4,10 +4,16 @@ CompileFlags: -D_UNICODE, -DFANY_DEBUG, "-std=c++17", - "-IC:/Users/SonnyCalcr/EDisk/CppCodes/IMECodes/FanImeUi/src", - "-IC:/Users/SonnyCalcr/EDisk/CppCodes/IMECodes/FanImeUi/build/vcpkg_installed/x64-windows/include", - "-IC:/Users/SonnyCalcr/.nuget/packages/microsoft.web.webview2/1.0.3124.44/build/native/include", - "-IC:/Users/SonnyCalcr/.nuget/packages/microsoft.windows.implementationlibrary/1.0.240803.1/include", + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer", + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer/src", + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer/build/vcpkg_installed/x64-windows/include", + # utfcpp includes + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer/FanImeEngine/utfcpp/source", + # WebView2 includes + "-IC:/Users/19833/.nuget/packages/microsoft.web.webview2/1.0.3240.44/build/native/include", + "-IC:/Users/19833/.nuget/packages/microsoft.windows.implementationlibrary/1.0.240803.1/include", + # Boost includes + "-IC:/Users/19833/scoop/apps/boost/current", -Wno-microsoft-goto, -Wno-nonportable-include-path, -Wno-microsoft-extra-qualification, diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index e76949e0..3fa611cd 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -5,7 +5,7 @@ set(PROJECT_NAME "FanImeServer") project(${PROJECT_NAME} VERSION 1.0) # Boost -set(Boost_ROOT "C:/Users/SonnyCalcr/scoop/apps/boost/1.87.0") +set(Boost_ROOT "C:/Users/19833/scoop/apps/boost/current") set (Boost_USE_STATIC_LIBS ON) find_package(Boost REQUIRED COMPONENTS locale json) include_directories(${Boost_INCLUDE_DIRS}) @@ -29,7 +29,12 @@ add_definitions( # /DFANY_DEBUG=1 # ) +# For utf8cpp, make it use C++11 and later +add_compile_options(/Zc:__cplusplus) + +include_directories("./") include_directories("./src/") +include_directories("../FanImeEngine/utfcpp/source/") set(MY_EXECUTABLE_NAME "FanImeServer") @@ -56,27 +61,27 @@ set(SRC_FILES ) set(SRC_FILES_IME_ENGINE - "./src/ime_engine/shuangpin/dictionary.cpp" - "./src/ime_engine/shuangpin/pinyin_utils.cpp" + "./FanImeEngine/shuangpin/dictionary.cpp" + "./FanImeEngine/shuangpin/pinyin_utils.cpp" ) set(SRC_FILES_GOOGLEIME - "./src/ime_engine/googlepinyinime-rev/src/share/dictbuilder.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/dictlist.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/dicttrie.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/lpicache.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/matrixsearch.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/mystdlib.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/ngram.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/pinyinime.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/searchutility.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/spellingtable.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/spellingtrie.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/splparser.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/sync.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/userdict.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/utf16char.cpp" - "./src/ime_engine/googlepinyinime-rev/src/share/utf16reader.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/dictbuilder.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/dictlist.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/dicttrie.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/lpicache.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/matrixsearch.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/mystdlib.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/ngram.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/pinyinime.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/searchutility.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/spellingtable.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/spellingtrie.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/splparser.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/sync.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/userdict.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/utf16char.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/utf16reader.cpp" ) add_executable(${MY_EXECUTABLE_NAME} WIN32 diff --git a/server/CMakePresets.json b/server/CMakePresets.json index 73d22024..277515dd 100644 --- a/server/CMakePresets.json +++ b/server/CMakePresets.json @@ -6,10 +6,10 @@ "generator": "Visual Studio 17 2022", "binaryDir": "${sourceDir}/build", "environment": { - "VCPKG_ROOT": "C:/Users/SonnyCalcr/scoop/apps/vcpkg/current/" + "VCPKG_ROOT": "C:/Users/19833/scoop/apps/vcpkg/current/" }, "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "C:/Users/SonnyCalcr/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake", + "CMAKE_TOOLCHAIN_FILE": "C:/Users/19833/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake", "CMAKE_BUILD_TYPE": "Debug" } } diff --git a/server/scripts/config_files/.clangd b/server/scripts/config_files/.clangd new file mode 100644 index 00000000..c8ae8d59 --- /dev/null +++ b/server/scripts/config_files/.clangd @@ -0,0 +1,24 @@ +CompileFlags: + Add: [ + -DUNICODE, + -D_UNICODE, + -DFANY_DEBUG, + "-std=c++17", + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer", + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer/src", + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer/build/vcpkg_installed/x64-windows/include", + # utfcpp includes + "-IC:/Users/19833/EDisk/CppCodes/ImeCodes/FanImeServer/FanImeEngine/utfcpp/source", + # WebView2 includes + "-IC:/Users/19833/.nuget/packages/microsoft.web.webview2/1.0.3240.44/build/native/include", + "-IC:/Users/19833/.nuget/packages/microsoft.windows.implementationlibrary/1.0.240803.1/include", + # Boost includes + "-IC:/Users/19833/scoop/apps/boost/current", + -Wno-microsoft-goto, + -Wno-nonportable-include-path, + -Wno-microsoft-extra-qualification, + # -Wno-unused-value, + ] # ignore some specific warnings + CompilationDatabase: build/ # Search build/ directory for compile_commands.json +# Diagnostics: +# UnusedIncludes: None # ignore unused includes diff --git a/server/scripts/config_files/CMakeLists.txt b/server/scripts/config_files/CMakeLists.txt new file mode 100644 index 00000000..3fa611cd --- /dev/null +++ b/server/scripts/config_files/CMakeLists.txt @@ -0,0 +1,98 @@ +cmake_minimum_required(VERSION 3.25.0) + +set(PROJECT_NAME "FanImeServer") + +project(${PROJECT_NAME} VERSION 1.0) + +# Boost +set(Boost_ROOT "C:/Users/19833/scoop/apps/boost/current") +set (Boost_USE_STATIC_LIBS ON) +find_package(Boost REQUIRED COMPONENTS locale json) +include_directories(${Boost_INCLUDE_DIRS}) + +# fmt, spdlog and sqlite3 +find_package(fmt CONFIG REQUIRED) +find_package(spdlog CONFIG REQUIRED) +find_package(unofficial-sqlite3 CONFIG REQUIRED) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +add_definitions( + /D_UNICODE=1 + /DUNICODE=1 +) + +# add_definitions( +# /DFANY_DEBUG=1 +# ) + +# For utf8cpp, make it use C++11 and later +add_compile_options(/Zc:__cplusplus) + +include_directories("./") +include_directories("./src/") +include_directories("../FanImeEngine/utfcpp/source/") + +set(MY_EXECUTABLE_NAME "FanImeServer") + +set(SRC_FILES + "./src/defines/defines.h" + "./src/global/globals.h" + "./src/ipc/event_listener.cpp" + "./src/ipc/event_listener.h" + "./src/ipc/ipc.cpp" + "./src/ipc/ipc.h" + "./src/log/fanylog.cpp" + "./src/log/fanylog.h" + "./src/utils/webview_utils.cpp" + "./src/utils/webview_utils.h" + "./src/utils/window_utils.cpp" + "./src/utils/window_utils.h" + "./src/utils/common_utils.cpp" + "./src/utils/common_utils.h" + "./src/webview2/candidate_window_webview2.cpp" + "./src/webview2/candidate_window_webview2.h" + "./src/window/candidate_window.cpp" + "./src/window/candidate_window.h" + "./src/main.cpp" +) + +set(SRC_FILES_IME_ENGINE + "./FanImeEngine/shuangpin/dictionary.cpp" + "./FanImeEngine/shuangpin/pinyin_utils.cpp" +) + +set(SRC_FILES_GOOGLEIME + "./FanImeEngine/googlepinyinime-rev/src/share/dictbuilder.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/dictlist.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/dicttrie.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/lpicache.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/matrixsearch.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/mystdlib.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/ngram.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/pinyinime.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/searchutility.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/spellingtable.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/spellingtrie.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/splparser.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/sync.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/userdict.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/utf16char.cpp" + "./FanImeEngine/googlepinyinime-rev/src/share/utf16reader.cpp" +) + +add_executable(${MY_EXECUTABLE_NAME} WIN32 + ${SRC_FILES} + ${SRC_FILES_IME_ENGINE} + ${SRC_FILES_GOOGLEIME} +) + +# WebView2 +set_target_properties(${PROJECT_NAME} PROPERTIES VS_GLOBAL_WebView2LoaderPreference "Static") +set_target_properties(${PROJECT_NAME} PROPERTIES VS_USER_PROPS "${CMAKE_SOURCE_DIR}/FanImeServer.props") +set_target_properties(${PROJECT_NAME} PROPERTIES VS_PACKAGE_REFERENCES "Microsoft.Web.WebView2_1.0.3240.44;Microsoft.Windows.ImplementationLibrary_1.0.240803.1") + +target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::sqlite3::sqlite3 fmt::fmt spdlog::spdlog Boost::locale Boost::json) \ No newline at end of file diff --git a/server/scripts/config_files/CMakePresets.json b/server/scripts/config_files/CMakePresets.json new file mode 100644 index 00000000..277515dd --- /dev/null +++ b/server/scripts/config_files/CMakePresets.json @@ -0,0 +1,17 @@ +{ + "version": 2, + "configurePresets": [ + { + "name": "vcpkg", + "generator": "Visual Studio 17 2022", + "binaryDir": "${sourceDir}/build", + "environment": { + "VCPKG_ROOT": "C:/Users/19833/scoop/apps/vcpkg/current/" + }, + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "C:/Users/19833/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake", + "CMAKE_BUILD_TYPE": "Debug" + } + } + ] +} \ No newline at end of file diff --git a/server/scripts/config_files/tests/CMakeLists.txt b/server/scripts/config_files/tests/CMakeLists.txt new file mode 100644 index 00000000..59d517e9 --- /dev/null +++ b/server/scripts/config_files/tests/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 3.25.0) +project(WinCppTemplate VERSION 1.0 LANGUAGES CXX) + +# Specify the C++ standard +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED True) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +# Boost +set(Boost_ROOT "C:/Users/19833/scoop/apps/boost/current") +set (Boost_USE_STATIC_LIBS ON) +find_package(Boost REQUIRED COMPONENTS locale json) +include_directories(${Boost_INCLUDE_DIRS}) + +# fmt, spdlog and sqlite3 +find_package(fmt CONFIG REQUIRED) +find_package(spdlog CONFIG REQUIRED) +find_package(unofficial-sqlite3 CONFIG REQUIRED) + +add_definitions( + /D_UNICODE=1 + /DUNICODE=1 +) + +include_directories("./includes/") +include_directories("../src/") +include_directories("../") +include_directories("../FanImeEngine/utfcpp/source/") + +set(MY_EXECUTABLE_NAME "imetest") +set( + SOURCE_FILES + "./src/test_shuangpin.cpp" + "../FanImeEngine/shuangpin/dictionary.cpp" + "../FanImeEngine/shuangpin/pinyin_utils.cpp" + # Google IME + "../FanImeEngine/googlepinyinime-rev/src/share/dictbuilder.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/dictlist.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/dicttrie.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/lpicache.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/matrixsearch.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/mystdlib.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/ngram.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/pinyinime.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/searchutility.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/spellingtable.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/spellingtrie.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/splparser.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/sync.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/userdict.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/utf16char.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/utf16reader.cpp" +) + +add_executable(${MY_EXECUTABLE_NAME} ${SOURCE_FILES} ) + +target_link_libraries(${MY_EXECUTABLE_NAME} fmt::fmt spdlog::spdlog unofficial::sqlite3::sqlite3 Boost::locale) \ No newline at end of file diff --git a/server/scripts/config_files/tests/CMakePresets.json b/server/scripts/config_files/tests/CMakePresets.json new file mode 100644 index 00000000..277515dd --- /dev/null +++ b/server/scripts/config_files/tests/CMakePresets.json @@ -0,0 +1,17 @@ +{ + "version": 2, + "configurePresets": [ + { + "name": "vcpkg", + "generator": "Visual Studio 17 2022", + "binaryDir": "${sourceDir}/build", + "environment": { + "VCPKG_ROOT": "C:/Users/19833/scoop/apps/vcpkg/current/" + }, + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "C:/Users/19833/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake", + "CMAKE_BUILD_TYPE": "Debug" + } + } + ] +} \ No newline at end of file diff --git a/server/scripts/prepare_env.py b/server/scripts/prepare_env.py new file mode 100644 index 00000000..49c01dcc --- /dev/null +++ b/server/scripts/prepare_env.py @@ -0,0 +1,137 @@ +import os + + +def normpath(path): + return path.replace("\\", "/") + + +local_app_data_dir = os.environ.get("LOCALAPPDATA") +home_dir = os.path.expanduser("~") + +cur_file_path = os.path.dirname(os.path.abspath(__file__)) +project_root_path = os.path.dirname(cur_file_path) +print(project_root_path) + +user_home = os.path.expanduser("~") + +FanImeServer_root_path = normpath(project_root_path) +FanImeServer_src_path = normpath(os.path.join(FanImeServer_root_path, "src")) +vcpkg_include_path = normpath( + os.path.join( + FanImeServer_root_path, + "tests", + "build", + "vcpkg_installed", + "x64-windows", + "include", + ) +) +utfcpp_path = normpath( + os.path.join(FanImeServer_root_path, "FanImeEngine", "utfcpp", "source") +) +webview2_path = normpath( + os.path.join( + user_home, + ".nuget", + "packages", + "microsoft.web.webview2", + "1.0.3240.44", + "build", + "native", + "include", + ) +) +wim_path = normpath( + os.path.join( + user_home, + ".nuget", + "packages", + "microsoft.windows.implementationlibrary", + "1.0.240803.1", + "include", + ) +) +boost_path = normpath(os.path.join(user_home, "scoop", "apps", "boost", "current")) + +# +# project_root/.clangd +# +dot_clangd_file = os.path.join( + FanImeServer_root_path, "scripts", "config_files", ".clangd" +) +dot_clangd_output_file = os.path.join(FanImeServer_root_path, ".clangd") +with open(dot_clangd_file, "r", encoding="utf-8") as f: + lines = f.readlines() +lines[6] = f' "-IC:{FanImeServer_root_path}",\n' +lines[7] = f' "-IC:{FanImeServer_src_path}",\n' +lines[8] = f' "-IC:{vcpkg_include_path}",\n' +lines[10] = f' "-IC:{utfcpp_path}",\n' +lines[12] = f' "-IC:{webview2_path}",\n' +lines[13] = f' "-IC:{wim_path}",\n' +lines[15] = f' "-IC:{boost_path}",\n' +with open(dot_clangd_output_file, "w", encoding="utf-8") as f: + f.writelines(lines) + +# +# project_root/tests/CMakeLists.txt +# +CMakeLists_file = os.path.join( + FanImeServer_root_path, "scripts", "config_files", "CMakeLists.txt" +) +CMakeLists_output_file = os.path.join(FanImeServer_root_path, "CMakeLists.txt") +with open(CMakeLists_file, "r", encoding="utf-8") as f: + lines = f.readlines() +lines[7] = f'set(Boost_ROOT "{boost_path}")\n' +with open(CMakeLists_output_file, "w", encoding="utf-8") as f: + f.writelines(lines) + +# +# CMakePresets.json +# +CMakePresets_file = os.path.join( + FanImeServer_root_path, "scripts", "config_files", "CMakePresets.json" +) +CMakePresets_file_output_file = os.path.join( + FanImeServer_root_path, "CMakePresets.json" +) +with open(CMakePresets_file, "r", encoding="utf-8") as f: + lines = f.readlines() +lines[8] = f' "VCPKG_ROOT": "{normpath(user_home)}/scoop/apps/vcpkg/current/"\n' +lines[11] = ( + f' "CMAKE_TOOLCHAIN_FILE": "{normpath(user_home)}/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake",\n' +) +with open(CMakePresets_file_output_file, "w", encoding="utf-8") as f: + f.writelines(lines) + +# +# project_root/tests/CMakeLists.txt +# +Tests_CMakeLists_file = os.path.join( + FanImeServer_root_path, "scripts", "config_files", "tests", "CMakeLists.txt" +) +Tests_CMakeLists_output_file = os.path.join( + FanImeServer_root_path, "tests", "CMakeLists.txt" +) +with open(Tests_CMakeLists_file, "r", encoding="utf-8") as f: + lines = f.readlines() +lines[10] = f'set(Boost_ROOT "{boost_path}")\n' +with open(Tests_CMakeLists_output_file, "w", encoding="utf-8") as f: + f.writelines(lines) + +# +# project_root/tests/CMakePresets.json +# +Tests_CMakePresets_file = os.path.join( + FanImeServer_root_path, "scripts", "config_files", "tests", "CMakePresets.json" +) +Tests_CMakePresets_output_file = os.path.join( + FanImeServer_root_path, "tests", "CMakePresets.json" +) +with open(Tests_CMakePresets_file, "r", encoding="utf-8") as f: + lines = f.readlines() +lines[8] = f' "VCPKG_ROOT": "{normpath(user_home)}/scoop/apps/vcpkg/current/"\n' +lines[11] = ( + f' "CMAKE_TOOLCHAIN_FILE": "{normpath(user_home)}/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake",\n' +) +with open(Tests_CMakePresets_output_file, "w", encoding="utf-8") as f: + f.writelines(lines) diff --git a/server/src/global/globals.h b/server/src/global/globals.h index 0566e613..a0059f47 100644 --- a/server/src/global/globals.h +++ b/server/src/global/globals.h @@ -1,6 +1,8 @@ +#pragma once #include namespace GlobalIme { -inline std::wstring AppName = L"DeerWritingBrush"; -} \ No newline at end of file +inline std::wstring AppName = L"FanImeTsf"; +inline std::wstring ServerName = L"FanImeTsf"; +} // namespace GlobalIme \ No newline at end of file diff --git a/server/src/ipc/ipc.h b/server/src/ipc/ipc.h index 947646fe..b58f34bf 100644 --- a/server/src/ipc/ipc.h +++ b/server/src/ipc/ipc.h @@ -1,6 +1,6 @@ #pragma once -#include "ime_engine/shuangpin/dictionary.h" +#include "FanImeEngine/shuangpin/dictionary.h" #include #include #include diff --git a/server/src/log/fanylog.cpp b/server/src/log/fanylog.cpp index 3f3015b5..41088c71 100644 --- a/server/src/log/fanylog.cpp +++ b/server/src/log/fanylog.cpp @@ -1,26 +1,5 @@ #include "fanylog.h" #include "spdlog/spdlog.h" -#include -#include - -void LogMessageW(const wchar_t *message) -{ - std::time_t now = std::time(nullptr); - std::tm *localTime = std::localtime(&now); - - wchar_t timeBuffer[80]; - wcsftime(timeBuffer, sizeof(timeBuffer) / sizeof(wchar_t), L"%Y-%m-%d %H:%M:%S", localTime); - - std::wstring logfilePath = L"C:/Users/SonnyCalcr/AppData/Local/DeerWritingBrush/log/fanimeuirawlog.log"; - std::wofstream logFile(logfilePath, std::ios_base::app); - if (logFile.is_open()) - { - logFile.imbue(std::locale("Chinese_China.65001")); - logFile << L"[" << timeBuffer << L"] " << message; - logFile << std::endl; - logFile.close(); - } -} int InitializeSpdLog() { diff --git a/server/src/log/fanylog.h b/server/src/log/fanylog.h index a9404588..f5d1a5e1 100644 --- a/server/src/log/fanylog.h +++ b/server/src/log/fanylog.h @@ -3,10 +3,15 @@ #include "spdlog/spdlog.h" #include #include +#include +#include "utils/common_utils.h" +#include "global/globals.h" -inline std::string LogFilePath = // - "C:/Users/SonnyCalcr/AppData/Local/DeerWritingBrush/log/fanimeui.log"; // +inline std::string LogFilePath = fmt::format( // + "C:/Users/{}/AppData/Local/FanImeTsf/log/{}.log", // + CommonUtils::get_username(), // + wstring_to_string(GlobalIme::ServerName) // +); inline auto logger = spdlog::basic_logger_mt("file_logger", ::LogFilePath); -void LogMessageW(const wchar_t *message); int InitializeSpdLog(); \ No newline at end of file diff --git a/server/src/utils/common_utils.cpp b/server/src/utils/common_utils.cpp index bac03cc6..589d6be9 100644 --- a/server/src/utils/common_utils.cpp +++ b/server/src/utils/common_utils.cpp @@ -79,4 +79,17 @@ string get_local_appdata_path() std::unique_ptr dirPtr(localAppDataDir, free); return localAppDataDirStr.empty() ? "" : localAppDataDirStr; } + +string get_username() +{ + char *localAppDataDir = nullptr; + std::string localAppDataDirStr; + errno_t err = _dupenv_s(&localAppDataDir, nullptr, "USERNAME"); + if (err == 0 && localAppDataDir != nullptr) + { + localAppDataDirStr = std::string(localAppDataDir); + } + std::unique_ptr dirPtr(localAppDataDir, free); + return localAppDataDirStr.empty() ? "" : localAppDataDirStr; +} } // namespace CommonUtils \ No newline at end of file diff --git a/server/src/utils/common_utils.h b/server/src/utils/common_utils.h index 16c6bea9..0ca12e97 100644 --- a/server/src/utils/common_utils.h +++ b/server/src/utils/common_utils.h @@ -12,4 +12,5 @@ void SendImeInputs(std::wstring words); namespace CommonUtils { std::string get_local_appdata_path(); -} \ No newline at end of file +std::string get_username(); +} // namespace CommonUtils \ No newline at end of file diff --git a/server/src/webview2/candidate_window_webview2.h b/server/src/webview2/candidate_window_webview2.h index 780fede9..e206f8eb 100644 --- a/server/src/webview2/candidate_window_webview2.h +++ b/server/src/webview2/candidate_window_webview2.h @@ -10,6 +10,8 @@ #include #include #include +#include "utils/common_utils.h" +#include "global/globals.h" using namespace Microsoft::WRL; @@ -21,7 +23,11 @@ inline ComPtr webviewController2; inline std::wstring HTMLString = LR"()"; inline std::wstring BodyString = LR"()"; inline std::wstring CandStr = L""; -const std::wstring LocalAssetsPath = L"C:\\Users\\SonnyCalcr\\AppData\\Roaming\\PotPlayerMini64\\Capture"; +const std::wstring LocalAssetsPath = fmt::format( // + L"{}\\{}\\assets", // + string_to_wstring(CommonUtils::get_local_appdata_path()), // + GlobalIme::AppName // +); int PrepareCandidateWindowHtml(); void UpdateHtmlContentWithJavaScript( // diff --git a/server/src/window/candidate_window.cpp b/server/src/window/candidate_window.cpp index c489bc68..6ec04b07 100644 --- a/server/src/window/candidate_window.cpp +++ b/server/src/window/candidate_window.cpp @@ -2,7 +2,6 @@ #include "candidate_window.h" #include "defines/defines.h" #include "defines/globals.h" -#include "spdlog/spdlog.h" #include "utils/common_utils.h" #include "utils/webview_utils.h" #include "utils/window_utils.h" @@ -12,7 +11,7 @@ #include #include #include -#include "ime_engine/shuangpin/pinyin_utils.h" +#include "FanImeEngine/shuangpin/pinyin_utils.h" LRESULT RegisterCandidateWindowMessage() { diff --git a/server/tests/CMakeLists.txt b/server/tests/CMakeLists.txt index db0262c6..59d517e9 100644 --- a/server/tests/CMakeLists.txt +++ b/server/tests/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # Boost -set(Boost_ROOT "C:/Users/SonnyCalcr/scoop/apps/boost/1.87.0") +set(Boost_ROOT "C:/Users/19833/scoop/apps/boost/current") set (Boost_USE_STATIC_LIBS ON) find_package(Boost REQUIRED COMPONENTS locale json) include_directories(${Boost_INCLUDE_DIRS}) @@ -25,30 +25,32 @@ add_definitions( include_directories("./includes/") include_directories("../src/") +include_directories("../") +include_directories("../FanImeEngine/utfcpp/source/") set(MY_EXECUTABLE_NAME "imetest") set( SOURCE_FILES "./src/test_shuangpin.cpp" - "../src/ime_engine/shuangpin/dictionary.cpp" - "../src/ime_engine/shuangpin/pinyin_utils.cpp" + "../FanImeEngine/shuangpin/dictionary.cpp" + "../FanImeEngine/shuangpin/pinyin_utils.cpp" # Google IME - "../src/ime_engine/googlepinyinime-rev/src/share/dictbuilder.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/dictlist.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/dicttrie.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/lpicache.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/matrixsearch.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/mystdlib.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/ngram.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/pinyinime.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/searchutility.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/spellingtable.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/spellingtrie.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/splparser.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/sync.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/userdict.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/utf16char.cpp" - "../src/ime_engine/googlepinyinime-rev/src/share/utf16reader.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/dictbuilder.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/dictlist.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/dicttrie.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/lpicache.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/matrixsearch.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/mystdlib.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/ngram.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/pinyinime.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/searchutility.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/spellingtable.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/spellingtrie.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/splparser.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/sync.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/userdict.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/utf16char.cpp" + "../FanImeEngine/googlepinyinime-rev/src/share/utf16reader.cpp" ) add_executable(${MY_EXECUTABLE_NAME} ${SOURCE_FILES} ) diff --git a/server/tests/CMakePresets.json b/server/tests/CMakePresets.json index 73d22024..277515dd 100644 --- a/server/tests/CMakePresets.json +++ b/server/tests/CMakePresets.json @@ -6,10 +6,10 @@ "generator": "Visual Studio 17 2022", "binaryDir": "${sourceDir}/build", "environment": { - "VCPKG_ROOT": "C:/Users/SonnyCalcr/scoop/apps/vcpkg/current/" + "VCPKG_ROOT": "C:/Users/19833/scoop/apps/vcpkg/current/" }, "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "C:/Users/SonnyCalcr/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake", + "CMAKE_TOOLCHAIN_FILE": "C:/Users/19833/scoop/apps/vcpkg/current/scripts/buildsystems/vcpkg.cmake", "CMAKE_BUILD_TYPE": "Debug" } }