Skip to content

Commit

Permalink
Add monospace font option (fixes #153)
Browse files Browse the repository at this point in the history
  • Loading branch information
namazso committed Jul 1, 2023
1 parent ea810ad commit eeffc72
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 24 deletions.
1 change: 1 addition & 0 deletions Localization/en-us.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"ERROR": "Error",
"CANCEL": "Cancel",
"DISPLAY_UPPERCASE": "Display hashes in uppercase",
"DISPLAY_MONOSPACE": "Display hashes in monospace font",
"LOOK_FOR_SUMFILES": "Look for sumfiles next to files being hashed",
"SUMFILE_UPPERCASE": "Export hashes in uppercase",
"SUMFILE_UNIX_ENDINGS": "Export files with Unix line endings",
Expand Down
14 changes: 10 additions & 4 deletions OpenHashTab/MainDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ INT_PTR MainDialog::CustomDrawListView(LPARAM lparam, HWND list) {

case CDDS_SUBITEM | CDDS_ITEMPREPAINT: //Before a subitem is drawn
{
INT_PTR flags = CDRF_DODEFAULT;

switch (lplvcd->iSubItem) {
case ColIndex_Hash: {
const auto index = static_cast<int>(lplvcd->nmcd.dwItemSpec);
Expand All @@ -133,16 +135,20 @@ INT_PTR MainDialog::CustomDrawListView(LPARAM lparam, HWND list) {
const auto dlg = (MainDialog*)GetWindowLongPtrW(GetParent(lplvcd->nmcd.hdr.hwndFrom), GWLP_USERDATA);

if (ColorLine(dlg->_prop_page->settings, lplvcd, color_type))
return CDRF_NEWFONT;
flags |= CDRF_NEWFONT;

if (dlg->_prop_page->settings.display_monospace.Get()) {
SelectObject(lplvcd->nmcd.hdc, dlg->_mono_font.get());
flags |= CDRF_NEWFONT;
}

// fall through for normal color
break;
}
[[fallthrough]];
default:
break;
}

return CDRF_DODEFAULT;
return flags;
}

default:
Expand Down
1 change: 1 addition & 0 deletions OpenHashTab/MainDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class MainDialog

HWND _hwnd{};
utl::UniqueFont _font { utl::GetDPIScaledFont() };
utl::UniqueFont _mono_font { utl::GetDPIScaledFont(L"Lucida Console") };
Coordinator* _prop_page;
wnd::WindowLayoutAdapter _adapter{ _hwnd, IDD_OPENHASHTAB_PROPPAGE };

Expand Down
37 changes: 21 additions & 16 deletions OpenHashTab/OpenHashTab.rc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
#define MUL14(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL15(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL16(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL17(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL18(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL19(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL20(a) (a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a)
#define MUL(a, c) MUL ## c(a)

#define MARGIN 6
Expand Down Expand Up @@ -66,21 +70,22 @@ BEGIN
#define OPTIONS_H 12

AUTOCHECKBOX "",IDC_CHECK_DISPLAY_UPPERCASE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 0), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_LOOK_FOR_SUMFILES, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 1), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_UPPERCASE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 2), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_UNIX_ENDINGS, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 3), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_USE_DOUBLE_SPACE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 4), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_FORWARD_SLASHES, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 5), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_DOT_HASH_COMPATIBLE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 6), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_BANNER, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 7), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_BANNER_DATE, OPTIONS_SUB_X, OPTIONS_Y + MUL(OPTIONS_H, 8), OPTIONS_SUB_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CLIPBOARD_AUTOENABLE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 9), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CLIPBOARD_AUTOENABLE_IF_NONE, OPTIONS_SUB_X, OPTIONS_Y + MUL(OPTIONS_H, 10), OPTIONS_SUB_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CLIPBOARD_AUTOENABLE_EXCLUSIVE, OPTIONS_SUB_X, OPTIONS_Y + MUL(OPTIONS_H, 11), OPTIONS_SUB_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CHECKAGAINST_AUTOFORMAT, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 12), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CHECKAGAINST_STRICT, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 13), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_HASH_SUMFILE_TOO, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 14), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_ALGORITHM_ONLY, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 15), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_DISPLAY_MONOSPACE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 1), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_LOOK_FOR_SUMFILES, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 2), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_UPPERCASE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 3), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_UNIX_ENDINGS, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 4), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_USE_DOUBLE_SPACE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 5), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_FORWARD_SLASHES, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 6), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_DOT_HASH_COMPATIBLE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 7), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_BANNER, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 8), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_BANNER_DATE, OPTIONS_SUB_X, OPTIONS_Y + MUL(OPTIONS_H, 9), OPTIONS_SUB_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CLIPBOARD_AUTOENABLE, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 10), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CLIPBOARD_AUTOENABLE_IF_NONE, OPTIONS_SUB_X, OPTIONS_Y + MUL(OPTIONS_H, 11), OPTIONS_SUB_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CLIPBOARD_AUTOENABLE_EXCLUSIVE, OPTIONS_SUB_X, OPTIONS_Y + MUL(OPTIONS_H, 12), OPTIONS_SUB_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CHECKAGAINST_AUTOFORMAT, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 13), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_CHECKAGAINST_STRICT, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 14), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_HASH_SUMFILE_TOO, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 15), OPTIONS_W, OPTIONS_H
AUTOCHECKBOX "",IDC_CHECK_SUMFILE_ALGORITHM_ONLY, OPTIONS_X, OPTIONS_Y + MUL(OPTIONS_H, 16), OPTIONS_W, OPTIONS_H

ICON IDI_ICON1,IDC_ICON_1,MARGIN,270,21,20
LTEXT "OpenHashTab",IDC_PROJECT_NAME,30,270,144,12
Expand All @@ -89,7 +94,7 @@ BEGIN

#define COLORS_X 180
#define COLORS_X_INNER (COLORS_X + MARGIN)
#define COLORS_Y (OPTIONS_Y + MUL(OPTIONS_H, 16))
#define COLORS_Y (OPTIONS_Y + MUL(OPTIONS_H, 17))
#define COLORS_W 108
#define COLORS_W_GROUP 102
#define COLORS_W_INNER (COLORS_W_GROUP - MARGIN - MARGIN)
Expand Down
1 change: 1 addition & 0 deletions OpenHashTab/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ struct Settings {
RegistrySetting<bool> algorithms[LegacyHashAlgorithm::k_count]{};

RegistrySetting<bool> display_uppercase{"DisplayUppercase", true};
RegistrySetting<bool> display_monospace{"DisplayMonospace", true};
RegistrySetting<bool> look_for_sumfiles{"LookForSumfiles", false};
RegistrySetting<bool> sumfile_uppercase{"SumfileUppercase", true};
RegistrySetting<bool> sumfile_unix_endings{"SumfileLF", true};
Expand Down
1 change: 1 addition & 0 deletions OpenHashTab/SettingsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ struct SettingCheckbox {
static constexpr SettingCheckbox s_boxes[] =
{
{ &Settings::display_uppercase, CTLSTR(DISPLAY_UPPERCASE ) },
{ &Settings::display_monospace, CTLSTR(DISPLAY_MONOSPACE ) },
{ &Settings::look_for_sumfiles, CTLSTR(LOOK_FOR_SUMFILES ) },
{ &Settings::sumfile_uppercase, CTLSTR(SUMFILE_UPPERCASE ) },
{ &Settings::sumfile_unix_endings, CTLSTR(SUMFILE_UNIX_ENDINGS ) },
Expand Down
3 changes: 2 additions & 1 deletion OpenHashTab/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
#define IDC_UNKNOWN_FG_CHECK 262
#define IDC_UNKNOWN_GROUP 263
#define IDC_UNKNOWN_SAMPLE 264
#define IDC_UNK_SAMPLE5 265
#define IDC_CHECK_DISPLAY_MONOSPACE 265

#define IDD_OPENHASHTAB_PROPPAGE 300
#define IDD_SETTINGS 301
Expand Down Expand Up @@ -130,3 +130,4 @@
#define IDS_UPDATE_NEWEST_TITLE 450
#define IDS_VT_NOT_FOUND 451
#define IDS_VT_NO_COMPATIBLE 452
#define IDS_DISPLAY_MONOSPACE 453
8 changes: 6 additions & 2 deletions OpenHashTab/utl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ std::pair<const char*, size_t> utl::GetResource(LPCWSTR name, LPCWSTR type) {
return {nullptr, 0};
}

utl::UniqueFont utl::GetDPIScaledFont() {
utl::UniqueFont utl::GetDPIScaledFont(const wchar_t* face_name) {
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(ncm);
SystemParametersInfoW(
Expand All @@ -386,7 +386,11 @@ utl::UniqueFont utl::GetDPIScaledFont() {
&ncm,
0
);
return {CreateFontIndirectW(&ncm.lfStatusFont), {}};
auto font = ncm.lfStatusFont;
if (face_name) {
wcscpy_s(font.lfFaceName, face_name);
}
return {CreateFontIndirectW(&font), {}};
}

void utl::SetFontForChildren(HWND hwnd, HFONT font) {
Expand Down
2 changes: 1 addition & 1 deletion OpenHashTab/utl.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ namespace utl {

using UniqueFont = std::unique_ptr<std::remove_pointer_t<HFONT>, FontDeleter>;

UniqueFont GetDPIScaledFont();
UniqueFont GetDPIScaledFont(const wchar_t* face_name = nullptr);

void SetFontForChildren(HWND hwnd, HFONT font);

Expand Down

0 comments on commit eeffc72

Please sign in to comment.