terminal/src/propsheet/console.h
Dustin Howett 3909cc103a Merged PR 5770253: [Git2Git] Merged PR 5760120: Add propsheet chooser to Windows
[Git2Git] Merged PR 5760120: Add propsheet chooser to Windows

Now the inbox console propsheet can choose which terminal is default

Related work items: MSFT-32007202 #492

Retrieved from https://microsoft.visualstudio.com os.2020 OS official/rs_wdx_dxp_windev d80f506858bd990c267de6cefae7ff55707b3a57
2021-03-10 01:19:04 +00:00

231 lines
5.4 KiB
C

/*++
Copyright (c) Microsoft Corporation.
Licensed under the MIT license.
Module Name:
console.h
Abstract:
This module contains the definitions for the console applet
Author:
Jerry Shea (jerrysh) Feb-3-1992
Revision History:
Mike Griese, migrie, Oct 2016:
Moved to cpp and the OpenConsole project
--*/
#pragma once
#include "font.h"
#include "OptionsPage.h"
#include "LayoutPage.h"
#include "ColorsPage.h"
#include "TerminalPropsheetPage.h"
#include "ColorControl.h"
//
// Icon ID.
//
#define IDI_CONSOLE 1
//
// String table constants
//
// clang-format off
#define IDS_NAME 1
#define IDS_INFO 2
#define IDS_TITLE 3
#define IDS_RASTERFONT 4
#define IDS_FONTSIZE 5
#define IDS_SELECTEDFONT 6
#define IDS_SAVE 7
#define IDS_LINKERRCAP 8
#define IDS_LINKERROR 9
#define IDS_FONTSTRING 10
#define IDS_TOOLTIP_LINE_SELECTION 11
#define IDS_TOOLTIP_FILTER_ON_PASTE 12
#define IDS_TOOLTIP_LINE_WRAP 13
#define IDS_TOOLTIP_CTRL_KEYS 14
#define IDS_TOOLTIP_EDIT_KEYS 15
// unused 16
#define IDS_TOOLTIP_OPACITY 17
#define IDS_TOOLTIP_INTERCEPT_COPY_PASTE 18
#define IDS_TERMINAL_DEF_INBOX 19
// clang-format on
void MakeAltRasterFont(
__in UINT CodePage,
__out COORD* AltFontSize,
__out BYTE* AltFontFamily,
__out ULONG* AltFontIndex,
__out_ecount(LF_FACESIZE) LPTSTR AltFaceName);
[[nodiscard]] NTSTATUS InitializeDbcsMisc(VOID);
BYTE CodePageToCharSet(
UINT CodePage);
BOOL ShouldAllowAllMonoTTFonts();
LPTTFONTLIST
SearchTTFont(
__in_opt LPCTSTR ptszFace,
BOOL fCodePage,
UINT CodePage);
BOOL IsAvailableTTFont(
LPCTSTR ptszFace);
BOOL IsAvailableTTFontCP(
LPCTSTR ptszFace,
UINT CodePage);
BOOL IsDisableBoldTTFont(
LPCTSTR ptszFace);
LPTSTR
GetAltFaceName(
LPCTSTR ptszFace);
[[nodiscard]] NTSTATUS DestroyDbcsMisc(VOID);
int LanguageListCreate(
HWND hDlg,
UINT CodePage);
int LanguageDisplay(
HWND hDlg,
UINT CodePage);
//
// Function prototypes
//
INT_PTR ConsolePropertySheet(
__in HWND hWnd,
__in PCONSOLE_STATE_INFO pStateInfo);
VOID RegisterClasses(
HINSTANCE hModule);
VOID UnregisterClasses(
HINSTANCE hModule);
INT_PTR APIENTRY FontDlgProc(
HWND hDlg,
UINT wMsg,
WPARAM wParam,
LPARAM lParam);
VOID InitRegistryValues(
__out PCONSOLE_STATE_INFO pStateInfo);
DWORD GetRegistryValues(
__out_opt PCONSOLE_STATE_INFO StateInfo);
VOID SetGlobalRegistryValues();
VOID SetRegistryValues(
PCONSOLE_STATE_INFO StateInfo,
DWORD dwPage);
[[nodiscard]] LRESULT CALLBACK FontPreviewWndProc(
HWND hWnd,
UINT wMsg,
WPARAM wParam,
LPARAM lParam);
[[nodiscard]] LRESULT CALLBACK PreviewWndProc(
HWND hWnd,
UINT wMsg,
WPARAM wParam,
LPARAM lParam);
VOID EndDlgPage(
const HWND hDlg,
const BOOL fSaveNow);
BOOL UpdateStateInfo(
HWND hDlg,
UINT Item,
int Value);
BOOL InitializeConsoleState();
void UninitializeConsoleState();
void UpdateApplyButton(const HWND hDlg);
[[nodiscard]] HRESULT FindFontAndUpdateState();
BOOL PopulatePropSheetPageArray(_Out_writes_(cPsps) PROPSHEETPAGE* pPsp, const size_t cPsps, const BOOL fRegisterCallbacks);
void CreateAndAssociateToolTipToControl(const UINT dlgItem, const HWND hDlg, const UINT idsToolTip);
BOOL CheckNum(HWND hDlg, UINT Item);
void UpdateItem(HWND hDlg, UINT item, UINT nNum);
void Undo(HWND hControlWindow);
//
// Macros
//
#define AttrToRGB(Attr) (gpStateInfo->ColorTable[(Attr)&0x0F])
#define ScreenTextColor(pStateInfo) \
(AttrToRGB(LOBYTE(pStateInfo->ScreenAttributes) & 0x0F))
#define ScreenBkColor(pStateInfo) \
(AttrToRGB(LOBYTE(pStateInfo->ScreenAttributes >> 4)))
#define PopupTextColor(pStateInfo) \
(AttrToRGB(LOBYTE(pStateInfo->PopupAttributes) & 0x0F))
#define PopupBkColor(pStateInfo) \
(AttrToRGB(LOBYTE(pStateInfo->PopupAttributes >> 4)))
// clang-format off
#if DBG
#define _DBGFONTS 0x00000001
#define _DBGFONTS2 0x00000002
#define _DBGCHARS 0x00000004
#define _DBGOUTPUT 0x00000008
#define _DBGALL 0xFFFFFFFF
extern ULONG gDebugFlag;
#define DBGFONTS(_params_)
#define DBGFONTS2(_params_)
#define DBGCHARS(_params_)
#define DBGOUTPUT(_params_)
#else
#define DBGFONTS(_params_)
#define DBGFONTS2(_params_)
#define DBGCHARS(_params_)
#define DBGOUTPUT(_params_)
#endif
// clang-format on
// Macro definitions that handle codepages
//
#define CP_US (UINT)437
#define CP_JPN (UINT)932
#define CP_WANSUNG (UINT)949
#define CP_TC (UINT)950
#define CP_SC (UINT)936
#define IsBilingualCP(cp) ((cp) == CP_JPN || (cp) == CP_WANSUNG)
#define IsEastAsianCP(cp) ((cp) == CP_JPN || (cp) == CP_WANSUNG || (cp) == CP_TC || (cp) == CP_SC)
const unsigned int TRANSPARENCY_RANGE_MIN = 0x4D;
const unsigned int OPTIONS_PAGE_INDEX = 0;
const unsigned int FONT_PAGE_INDEX = 1;
const unsigned int LAYOUT_PAGE_INDEX = 2;
const unsigned int COLORS_PAGE_INDEX = 3;
const unsigned int TERMINAL_PAGE_INDEX = 4;
// number of property sheet pages
static const int V1_NUMBER_OF_PAGES = 4;
static const int NUMBER_OF_PAGES = 5;
BOOL GetConsoleBoolValue(__in PCWSTR pszValueName, __in BOOL fDefault);