Skip to content

Commit

Permalink
Add ColorSchemes.*
Browse files Browse the repository at this point in the history
  • Loading branch information
sdottaka committed Nov 10, 2024
1 parent 76fd445 commit f516cfa
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 30 deletions.
41 changes: 41 additions & 0 deletions Src/ColorSchemes.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include "pch.h"
#include "ColorSchemes.h"
#include "UnicodeString.h"
#include "DirItem.h"
#include "DirTravel.h"
#include "paths.h"
#include "Environment.h"

namespace ColorSchemes
{

String GetColorSchemesFolder()
{
return paths::ConcatPath(env::GetProgPath(), _T("ColorSchemes"));
}

String GetColorSchemePath(const String& name)
{
return paths::ConcatPath(GetColorSchemesFolder(), name + _T(".ini"));
}

std::vector<String> GetColorSchemeNames()
{
DirItemArray dirs, files;
std::vector<String> names;

LoadAndSortFiles(GetColorSchemesFolder(), &dirs, &files, false);

for (DirItem& item : files)
{
String filename;
String ext;
paths::SplitFilename(item.filename, nullptr, &filename, &ext);
if (strutils::compare_nocase(ext, _T("ini")) == 0)
names.push_back(filename);
}

return names;
}

}
9 changes: 9 additions & 0 deletions Src/ColorSchemes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include "UnicodeString.h"
#include <vector>

namespace ColorSchemes
{
String GetColorSchemesFolder();
String GetColorSchemePath(const String& name);
std::vector<String> GetColorSchemeNames();
}
5 changes: 5 additions & 0 deletions Src/Merge.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,10 @@
</ClCompile>
<ClCompile Include="BasicFlatStatusBar.cpp" />
<ClCompile Include="ClipboardHistory.cpp" />
<ClCompile Include="ColorSchemes.cpp">
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName)2.pch</PrecompiledHeaderOutputFile>
</ClCompile>
<ClCompile Include="Common\cio.cpp">
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName)2.pch</PrecompiledHeaderOutputFile>
Expand Down Expand Up @@ -1451,6 +1455,7 @@
<ClInclude Include="AboutDlg.h" />
<ClInclude Include="BasicFlatStatusBar.h" />
<ClInclude Include="ClipboardHistory.h" />
<ClInclude Include="ColorSchemes.h" />
<ClInclude Include="Common\SysColorHook.h" />
<ClInclude Include="MouseHook.h" />
<ClInclude Include="MenuBar.h" />
Expand Down
6 changes: 6 additions & 0 deletions Src/Merge.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,9 @@
<ClCompile Include="PropSysColors.cpp">
<Filter>MFCGui\PropertyPages\Source Files</Filter>
</ClCompile>
<ClCompile Include="ColorSchemes.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="charsets.h">
Expand Down Expand Up @@ -1430,6 +1433,9 @@
<ClInclude Include="Common\SysColorHook.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ColorSchemes.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="res\binarydiff.ico">
Expand Down
33 changes: 3 additions & 30 deletions Src/PropColorSchemes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,8 @@
#include "OptionsMgr.h"
#include "RegOptionsMgr.h"
#include "OptionsPanel.h"
#include "DirItem.h"
#include "DirTravel.h"
#include "paths.h"
#include "Environment.h"
#include "SysColorHook.h"
#include "ColorSchemes.h"

#ifdef _DEBUG
#define new DEBUG_NEW
Expand Down Expand Up @@ -59,38 +56,14 @@ void PropColorSchemes::WriteOptions()
GetOptionsMgr()->SaveOption(OPT_COLOR_SCHEME, m_sColorScheme);
}

static String GetColorSchemesFolder()
{
return paths::ConcatPath(env::GetProgPath(), _T("ColorSchemes"));
}

static std::vector<String> GetColorSchemeNames()
{
DirItemArray dirs, files;
std::vector<String> names;

LoadAndSortFiles(GetColorSchemesFolder(), &dirs, &files, false);

for (DirItem& item : files)
{
String filename;
String ext;
paths::SplitFilename(item.filename, nullptr, &filename, &ext);
if (strutils::compare_nocase(ext, _T("ini")) == 0)
names.push_back(filename);
}

return names;
}

/**
* @brief Called before propertysheet is drawn.
*/
BOOL PropColorSchemes::OnInitDialog()
{
CComboBox * combo = (CComboBox*) GetDlgItem(IDC_COLOR_SCHEMES);

for (auto& name : GetColorSchemeNames())
for (auto& name : ColorSchemes::GetColorSchemeNames())
{
combo->AddString(name.c_str());
if (strutils::compare_nocase(name, m_sColorScheme) == 0)
Expand All @@ -109,7 +82,7 @@ void PropColorSchemes::OnCbnSelchangeColorSchemes()
GetDlgItemText(IDC_COLOR_SCHEMES, sColorScheme);
m_sColorScheme = sColorScheme;
WriteOptions();
String path = paths::ConcatPath(GetColorSchemesFolder(), sColorScheme + _T(".ini"));
String path = ColorSchemes::GetColorSchemePath(sColorScheme);
SysColorHook::Unhook(AfxGetInstanceHandle());
auto result = GetOptionsMgr()->ImportOptions(path);
if (GetOptionsMgr()->GetBool(OPT_SYSCOLOR_HOOK_ENABLED))
Expand Down

0 comments on commit f516cfa

Please sign in to comment.