Skip to content

Commit

Permalink
#5231: Move files around and split .cpp files across the class border.
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Aug 15, 2020
1 parent 9f917c9 commit 6cbf5e5
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 71 deletions.
9 changes: 5 additions & 4 deletions radiant/RadiantApp.cpp
Expand Up @@ -9,7 +9,7 @@
#include "messages/GameConfigNeededMessage.h"
#include "ui/prefdialog/GameSetupDialog.h"
#include "module/StaticModule.h"
#include "LocalisationProvider.h"
#include "settings/LocalisationProvider.h"

#include <wx/wxprec.h>
#include <wx/event.h>
Expand Down Expand Up @@ -67,8 +67,9 @@ bool RadiantApp::OnInit()
}

// Register the localisation helper before initialising the modules
ui::LocalisationProvider::Initialise(_context);
_coreModule->get()->getLanguageManager().registerProvider(ui::LocalisationProvider::Instance());
settings::LocalisationProvider::Initialise(_context);
auto& languageManager = _coreModule->get()->getLanguageManager();
languageManager.registerProvider(settings::LocalisationProvider::Instance());

#if defined(POSIX) && !defined(__APPLE__)
// greebo: not sure if this is needed
Expand Down Expand Up @@ -105,7 +106,7 @@ int RadiantApp::OnExit()
languageManager.clearProvider();

// Clean up static resources
ui::LocalisationProvider::Cleanup();
settings::LocalisationProvider::Cleanup();

_coreModule.reset();

Expand Down
64 changes: 64 additions & 0 deletions radiant/settings/LocalisationModule.cpp
@@ -0,0 +1,64 @@
#include "LocalisationModule.h"

#include "i18n.h"
#include "ipreferencesystem.h"
#include "registry/registry.h"

#include "module/StaticModule.h"
#include "LocalisationProvider.h"

namespace settings
{

const std::string& LocalisationModule::getName() const
{
static std::string _name("LocalisationModule");
return _name;
}

const StringSet& LocalisationModule::getDependencies() const
{
static StringSet _dependencies;

if (_dependencies.empty())
{
_dependencies.insert(MODULE_PREFERENCESYSTEM);
_dependencies.insert(MODULE_XMLREGISTRY);
}

return _dependencies;
}

void LocalisationModule::initialiseModule(const ApplicationContext& ctx)
{
rMessage() << getName() << "::initialiseModule called" << std::endl;

// Construct the list of available languages
ComboBoxValueList langs;

LocalisationProvider::Instance()->foreachAvailableLanguage([&](const LocalisationProvider::Language& lang)
{
langs.emplace_back(lang.twoDigitCode + " - " + lang.displayName);
});

auto registryKey = LocalisationProvider::RKEY_LANGUAGE;

// Load the currently selected index into the registry
registry::setValue(registryKey, LocalisationProvider::Instance()->getCurrentLanguageIndex());
GlobalRegistry().setAttribute(registryKey, "volatile", "1"); // don't save this to user.xml

// Add Preferences
IPreferencePage& page = GlobalPreferenceSystem().getPage(_("Settings/Language"));
page.appendCombo(_("Language"), registryKey, langs);

page.appendLabel(_("<b>Note:</b> You'll need to restart DarkRadiant\nafter changing the language setting."));
}

void LocalisationModule::shutdownModule()
{
LocalisationProvider::Instance()->saveLanguageSetting();
}

module::StaticModule<LocalisationModule> localisationModule;

}
19 changes: 19 additions & 0 deletions radiant/settings/LocalisationModule.h
@@ -0,0 +1,19 @@
#pragma once

#include "imodule.h"

namespace settings
{

// Localisation module, taking care of the Language Preferences page
class LocalisationModule :
public RegisterableModule
{
public:
const std::string& getName() const override;
const StringSet& getDependencies() const override;
void initialiseModule(const ApplicationContext& ctx) override;
void shutdownModule() override;
};

}
Expand Up @@ -4,23 +4,20 @@
#include <stdexcept>

#include "itextstream.h"
#include "ipreferencesystem.h"
#include "registry/registry.h"

#include "string/case_conv.h"
#include "os/path.h"
#include "module/StaticModule.h"

#include <wx/translation.h>

namespace ui
namespace settings
{

namespace
{
const char* const LANGUAGE_SETTING_FILE = "darkradiant.language";
const char* const DEFAULT_LANGUAGE = "en";
const std::string RKEY_LANGUAGE("user/ui/language");
}

class UnknownLanguageException :
Expand All @@ -32,6 +29,8 @@ class UnknownLanguageException :
{}
};

const char* const LocalisationProvider::RKEY_LANGUAGE = "user/ui/language";

LocalisationProvider::LocalisationProvider(ApplicationContext& ctx)
{
// Point wxWidgets to the folder where the catalog files are stored
Expand Down Expand Up @@ -204,60 +203,4 @@ void LocalisationProvider::saveLanguageSetting()
saveLanguageSetting(_supportedLanguages[langIndex].twoDigitCode);
}

// Localisation module, taking care of the Preferences page

class LocalisationModule :
public RegisterableModule
{
public:
const std::string& getName() const override
{
static std::string _name("LocalisationModule");
return _name;
}

const StringSet& getDependencies() const override
{
static StringSet _dependencies;

if (_dependencies.empty())
{
_dependencies.insert(MODULE_PREFERENCESYSTEM);
_dependencies.insert(MODULE_XMLREGISTRY);
}

return _dependencies;
}

void initialiseModule(const ApplicationContext& ctx) override
{
rMessage() << getName() << "::initialiseModule called" << std::endl;

// Construct the list of available languages
ComboBoxValueList langs;

LocalisationProvider::Instance()->foreachAvailableLanguage([&](const LocalisationProvider::Language& lang)
{
langs.emplace_back(lang.twoDigitCode + " - " + lang.displayName);
});

// Load the currently selected index into the registry
registry::setValue(RKEY_LANGUAGE, LocalisationProvider::Instance()->getCurrentLanguageIndex());
GlobalRegistry().setAttribute(RKEY_LANGUAGE, "volatile", "1"); // don't save this to user.xml

// Add Preferences
IPreferencePage& page = GlobalPreferenceSystem().getPage(_("Settings/Language"));
page.appendCombo(_("Language"), RKEY_LANGUAGE, langs);

page.appendLabel(_("<b>Note:</b> You'll need to restart DarkRadiant\nafter changing the language setting."));
}

void shutdownModule()
{
LocalisationProvider::Instance()->saveLanguageSetting();
}
};

module::StaticModule<LocalisationModule> localisationModule;

}
Expand Up @@ -2,7 +2,7 @@

#include "i18n.h"

namespace ui
namespace settings
{

// Helper class acting as ILocalisationProvider.
Expand All @@ -11,6 +11,8 @@ class LocalisationProvider :
public language::ILocalisationProvider
{
public:
static const char* const RKEY_LANGUAGE;

struct Language
{
std::string twoDigitCode; // "en"
Expand Down
6 changes: 4 additions & 2 deletions tools/msvc/DarkRadiant.vcxproj
Expand Up @@ -204,7 +204,6 @@
<ClCompile Include="..\..\radiant\eventmanager\Statement.cpp" />
<ClCompile Include="..\..\radiant\eventmanager\Toggle.cpp" />
<ClCompile Include="..\..\radiant\eventmanager\WidgetToggle.cpp" />
<ClCompile Include="..\..\radiant\LocalisationProvider.cpp" />
<ClCompile Include="..\..\radiant\main.cpp" />
<ClCompile Include="..\..\radiant\map\StartupMapLoader.cpp" />
<ClCompile Include="..\..\radiant\precompiled.cpp">
Expand All @@ -223,6 +222,8 @@
<ClCompile Include="..\..\radiant\selection\ManipulateMouseTool.cpp" />
<ClCompile Include="..\..\radiant\selection\SelectionMouseTools.cpp" />
<ClCompile Include="..\..\radiant\selection\SelectionTest.cpp" />
<ClCompile Include="..\..\radiant\settings\LocalisationModule.cpp" />
<ClCompile Include="..\..\radiant\settings\LocalisationProvider.cpp" />
<ClCompile Include="..\..\radiant\settings\Win32Registry.cpp" />
<ClCompile Include="..\..\radiant\uimanager\animationpreview\AnimationPreview.cpp" />
<ClCompile Include="..\..\radiant\uimanager\animationpreview\MD5AnimationChooser.cpp" />
Expand Down Expand Up @@ -389,7 +390,6 @@
<ClInclude Include="..\..\radiant\eventmanager\Statement.h" />
<ClInclude Include="..\..\radiant\eventmanager\Toggle.h" />
<ClInclude Include="..\..\radiant\eventmanager\WidgetToggle.h" />
<ClInclude Include="..\..\radiant\LocalisationProvider.h" />
<ClInclude Include="..\..\radiant\map\StartupMapLoader.h" />
<ClInclude Include="..\..\radiant\precompiled.h" />
<ClInclude Include="..\..\radiant\RadiantApp.h" />
Expand All @@ -399,6 +399,8 @@
<ClInclude Include="..\..\radiant\selection\ManipulateMouseTool.h" />
<ClInclude Include="..\..\radiant\selection\SelectionMouseTools.h" />
<ClInclude Include="..\..\radiant\selection\SelectionTest.h" />
<ClInclude Include="..\..\radiant\settings\LocalisationModule.h" />
<ClInclude Include="..\..\radiant\settings\LocalisationProvider.h" />
<ClInclude Include="..\..\radiant\settings\Win32Registry.h" />
<ClInclude Include="..\..\radiant\uimanager\animationpreview\AnimationPreview.h" />
<ClInclude Include="..\..\radiant\uimanager\animationpreview\MD5AnimationChooser.h" />
Expand Down
14 changes: 10 additions & 4 deletions tools/msvc/DarkRadiant.vcxproj.filters
Expand Up @@ -670,8 +670,11 @@
<ClCompile Include="..\..\radiant\ui\statusbar\EditingStopwatchStatus.cpp">
<Filter>src\ui\statusbar</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\LocalisationProvider.cpp">
<Filter>src</Filter>
<ClCompile Include="..\..\radiant\settings\LocalisationProvider.cpp">
<Filter>src\settings</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\settings\LocalisationModule.cpp">
<Filter>src\settings</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
Expand Down Expand Up @@ -1293,8 +1296,11 @@
<ClInclude Include="..\..\radiant\ui\statusbar\EditingStopwatchStatus.h">
<Filter>src\ui\statusbar</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\LocalisationProvider.h">
<Filter>src</Filter>
<ClInclude Include="..\..\radiant\settings\LocalisationProvider.h">
<Filter>src\settings</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\settings\LocalisationModule.h">
<Filter>src\settings</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
Expand Down

0 comments on commit 6cbf5e5

Please sign in to comment.