Skip to content

Commit

Permalink
Merge pull request #1735 from berryzplus/feature/refactoring_app_name
Browse files Browse the repository at this point in the history
「アプリ名」をリソースに入れる
  • Loading branch information
berryzplus authored Oct 6, 2021
2 parents 1ff0b48 + 52ce874 commit f2a2642
Show file tree
Hide file tree
Showing 12 changed files with 120 additions and 39 deletions.
8 changes: 8 additions & 0 deletions sakura_core/CSelectLang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#include "stdafx.h"
#include "CSelectLang.h"

#include "_main/CProcess.h"
#include "util/os.h"
#include "util/module.h"
#include "debug/Debug2.h"
Expand Down Expand Up @@ -404,5 +406,11 @@ HINSTANCE CSelectLang::ChangeLang( UINT nIndex )
// ロケールを設定
::SetThreadUILanguage( m_psLangInfo->wLangId );

// アプリ名をリソースから読み込む
if( auto pcProcess = CProcess::getInstance() )
{
pcProcess->UpdateAppName(LS(STR_GSTR_APPNAME));
}

return m_psLangInfo->hInstance;
}
3 changes: 2 additions & 1 deletion sakura_core/String_define.h
Original file line number Diff line number Diff line change
Expand Up @@ -1325,5 +1325,6 @@
#define STR_FILEDIALOG_EOL 35039
#define STR_FILEDIALOG_MRU 35040
#define STR_FILEDIALOG_OPENFOLDER 35041
#define STR_GSTR_APPNAME 35047

// Now using max number 35044 by STR_STATUS_FONTZOOM_1
// Now using max number 35047 by STR_GSTR_APPNAME
15 changes: 14 additions & 1 deletion sakura_core/_main/CProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@
*/

#include "StdAfx.h"
#include "CProcess.h"
#include "_main/CProcess.h"

#include "util/module.h"
#include "env/CShareData.h"
#include "env/DLLSHAREDATA.h"
#include "config/app_constants.h"
#include "CSelectLang.h"
#include "String_define.h"

/*!
@brief プロセス基底クラス
Expand All @@ -38,6 +41,8 @@ CProcess::CProcess(
, m_pfnMiniDumpWriteDump(NULL)
#endif
{
// アプリ名をリソースから読み込む
m_strAppName = LS(STR_GSTR_APPNAME);
}

/*!
Expand Down Expand Up @@ -165,3 +170,11 @@ void CProcess::RefreshString()
{
m_cShareData.RefreshString();
}

/*!
言語選択後にアプリ名を更新します。
*/
void CProcess::UpdateAppName( std::wstring_view appName )
{
m_strAppName = appName;
}
7 changes: 5 additions & 2 deletions sakura_core/_main/CProcess.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#pragma once

#include <filesystem>
#include <string>
#include <string_view>

#include "global.h"
#include "util/design_template.h"
Expand Down Expand Up @@ -59,6 +61,8 @@ class CProcess : public TSingleInstance<CProcess> {
HWND GetMainWindow() const{ return m_hWnd; }

[[nodiscard]] const CShareData* GetShareDataPtr() const { return &m_cShareData; }
[[nodiscard]] LPCWSTR GetAppName( void ) const { return m_strAppName.c_str(); }
void UpdateAppName( std::wstring_view appName );

private:
HINSTANCE m_hInstance;
Expand All @@ -75,7 +79,6 @@ class CProcess : public TSingleInstance<CProcess> {
);
#endif
CShareData m_cShareData;

private:
std::wstring m_strAppName;
};
#endif /* SAKURA_CPROCESS_FECC5450_9096_4EAD_A6DA_C8B12C3A31B5_H_ */
28 changes: 0 additions & 28 deletions sakura_core/_main/WinMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,34 +32,6 @@
#include "version.h"
#include "util/std_macro.h"
#include "env/DLLSHAREDATA.h"
#include "config/app_constants.h"

// アプリ名。2007.09.21 kobake 整理
#define _APP_NAME_(TYPE) TYPE("sakura")

#ifdef _DEBUG
#define _APP_NAME_2_(TYPE) TYPE("(デバッグ版)")
#else
#define _APP_NAME_2_(TYPE) TYPE("")
#endif

#ifdef ALPHA_VERSION
#define _APP_NAME_3_(TYPE) TYPE("(Alpha Version)")
#else
#define _APP_NAME_3_(TYPE) TYPE("")
#endif

#ifdef DEV_VERSION
#define _APP_NAME_DEV_(TYPE) TYPE("(dev Version)")
#else
#define _APP_NAME_DEV_(TYPE) TYPE("")
#endif

#define _GSTR_APPNAME_(TYPE) _APP_NAME_(TYPE) _APP_NAME_2_(TYPE) _APP_NAME_DEV_(TYPE) _APP_NAME_3_(TYPE)

const WCHAR g_szGStrAppName[] = (_GSTR_APPNAME_(_T) ); // この変数を直接参照せずに GSTR_APPNAME を使うこと
const CHAR g_szGStrAppNameA[] = (_GSTR_APPNAME_(ATEXT)); // この変数を直接参照せずに GSTR_APPNAME_A を使うこと
const WCHAR g_szGStrAppNameW[] = (_GSTR_APPNAME_(LTEXT)); // この変数を直接参照せずに GSTR_APPNAME_W を使うこと

/*!
Windows Entry point
Expand Down
21 changes: 20 additions & 1 deletion sakura_core/_main/global.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,29 @@
*/

#include "StdAfx.h"
#include "global.h"
#include "_main/global.h"

#include "basis/CErrorInfo.h"
#include "config/app_constants.h"
#include "window/CEditWnd.h"
#include "CNormalProcess.h"

/*!
アプリ名を取得します。
プロセスの生成前にアプリ名を取得することはできません。
@date 2007/09/21 kobake 整理
*/
LPCWSTR GetAppName( void )
{
const auto pcProcess = CProcess::getInstance();
if( !pcProcess )
{
::_com_raise_error(E_FAIL, MakeMsgError(L"Any process has been instantiated."));
}
return pcProcess->GetAppName();
}

//2007.10.02 kobake CEditWndのインスタンスへのポインタをここに保存しておく
CEditWnd* g_pcEditWnd = NULL;

Expand Down
9 changes: 3 additions & 6 deletions sakura_core/config/app_constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,10 @@
// 名前 //
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- //

extern const WCHAR g_szGStrAppName[];
extern const CHAR g_szGStrAppNameA[];
extern const WCHAR g_szGStrAppNameW[];
LPCWSTR GetAppName( void );

#define GSTR_APPNAME g_szGStrAppName //!< アプリ名の文字列 (TCHAR版)
#define GSTR_APPNAME_A g_szGStrAppNameA //!< アプリ名の文字列 (CHAR版)
#define GSTR_APPNAME_W g_szGStrAppNameW //!< アプリ名の文字列 (UNICODE版)
#define GSTR_APPNAME_W GetAppName() //!< アプリ名の文字列
#define GSTR_APPNAME GSTR_APPNAME_W

// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- //
// テキストエリア //
Expand Down
23 changes: 23 additions & 0 deletions sakura_core/sakura_rc.rc2
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
// このファイルにはリソースエディタで編集できない要素を配置します.
// このファイルのエンコーディング/改行コードは UTF-16LE(BOM)/CRLF です.

#define _APP_NAME_1 "sakura"

#ifdef _DEBUG
#define _APP_NAME_2 "(デバッグ版)"
#else
#define _APP_NAME_2 ""
#endif

#ifdef DEV_VERSION
#define _APP_NAME_3 "(dev Version)"
#else
#define _APP_NAME_3 ""
#endif

#ifdef ALPHA_VERSION
#define _APP_NAME_4 "(Alpha Version)"
#else
#define _APP_NAME_4 ""
#endif

#define _GSTR_APPNAME _APP_NAME_1 _APP_NAME_2 _APP_NAME_3 _APP_NAME_4

#define S_COPYRIGHT "Copyright (C) 1998-2021 by Norio Nakatani & Collaborators"
#define FL_VER PR_VER
#define FL_VER_STR PR_VER_STR
Expand Down Expand Up @@ -137,6 +159,7 @@ BEGIN
#else
STR_BREGONIG_INIT "bregonig.dll の利用に失敗しました。\r\n正規表現を利用するには Unicode 版の bregonig.dll が必要です。\r\n入手方法はヘルプを参照してください。"
#endif
STR_GSTR_APPNAME _GSTR_APPNAME

// Select Language
STR_SELLANG_NAME "Japanese" // language name [Primary language (Sublanguage)]
Expand Down
23 changes: 23 additions & 0 deletions sakura_lang_en_US/sakura_lang_rc.rc2
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
// このファイルにはリソースエディタで編集できない要素を配置します.
// このファイルのエンコーディング/改行コードは UTF-16LE(BOM)/CRLF です.

#define _APP_NAME_1 "sakura"

#ifdef _DEBUG
#define _APP_NAME_2 "(debug build)"
#else
#define _APP_NAME_2 ""
#endif

#ifdef DEV_VERSION
#define _APP_NAME_3 "(dev Version)"
#else
#define _APP_NAME_3 ""
#endif

#ifdef ALPHA_VERSION
#define _APP_NAME_4 "(Alpha Version)"
#else
#define _APP_NAME_4 ""
#endif

#define _GSTR_APPNAME _APP_NAME_1 _APP_NAME_2 _APP_NAME_3 _APP_NAME_4

#define S_COPYRIGHT "Copyright (C) 1998-2021 by Norio Nakatani & Collaborators"
#define S_COPYRIGHT_TRANSLATION "Copyright (C) 2011-2021 by Lucien & Collaborators"
#define FL_VER PR_VER
Expand Down Expand Up @@ -148,4 +170,5 @@ BEGIN
#else
STR_BREGONIG_INIT "failed to init the bregonig.dll.\r\nRegex relies upon bregonig.dll(Uniocde ver) to work.\r\nPlease refer to the help for assistance."
#endif
STR_GSTR_APPNAME _GSTR_APPNAME
END
6 changes: 6 additions & 0 deletions tests/unittests/test-cconvert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
#include "convert/CConvert_ZeneisuToHaneisu.h"
#include "convert/CConvert_ZenkataToHankata.h"

#include "_main/CNormalProcess.h"

TEST(CConvert, ZenkataToHankata)
{
CNativeW actual;
Expand Down Expand Up @@ -405,6 +407,10 @@ class ConvTest : public ::testing::TestWithParam<ConvTestParamType> {};
*/
TEST_P(ConvTest, test)
{
// メモリ確保失敗時に表示するメッセージボックスで、
// 「アプリ名」を取得するためにプロセスのインスタンスが必要。
CNormalProcess cProcess(::GetModuleHandle(nullptr), L"");

const auto eFuncCode = std::get<0>(GetParam());
std::wstring_view source = std::get<1>(GetParam());
std::wstring_view expected = std::get<2>(GetParam());
Expand Down
10 changes: 10 additions & 0 deletions tests/unittests/test-cmemory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
#include <gtest/gtest.h>
#include "mem/CMemory.h"

#include "_main/CNormalProcess.h"

/*!
_SetRawLength(0) を呼び出して落ちないことを確認する
*/
Expand Down Expand Up @@ -107,6 +109,10 @@ TEST(CMemory, OverHeapMaxReq)
{
CMemory cmem;

// メモリ確保失敗時に表示するメッセージボックスで、
// 「アプリ名」を取得するためにプロセスのインスタンスが必要。
CNormalProcess cProcess(::GetModuleHandle(nullptr), L"");

// _HEAP_MAXREQを越える値を指定すると、メモリは確保されない
cmem.AllocBuffer(static_cast<unsigned>(_HEAP_MAXREQ) + 1);
ASSERT_TRUE(cmem.GetRawPtr() == nullptr);
Expand All @@ -130,6 +136,10 @@ TEST(CMemory, OverMaxSize)
{
CMemory cmem;

// メモリ確保失敗時に表示するメッセージボックスで、
// 「アプリ名」を取得するためにプロセスのインスタンスが必要。
CNormalProcess cProcess(::GetModuleHandle(nullptr), L"");

// INT_MAXを越える値を指定すると、メモリは確保されない
cmem.AllocBuffer(static_cast<unsigned>(INT_MAX) + 1);
ASSERT_TRUE(cmem.GetRawPtr() == nullptr);
Expand Down
6 changes: 6 additions & 0 deletions tests/unittests/test-statictype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,17 @@

#include "util/StaticType.h"

#include "_main/CNormalProcess.h"

/*!
@brief StaticVectorのテスト
*/
TEST(StaticVector, push_back)
{
// メモリ確保失敗時に表示するメッセージボックスで、
// 「アプリ名」を取得するためにプロセスのインスタンスが必要。
CNormalProcess cProcess(::GetModuleHandle(nullptr), L"");

// サイズ1の配列を用意する
auto vec = StaticVector<long long, 1>();
const auto& constVec = vec;
Expand Down

0 comments on commit f2a2642

Please sign in to comment.