mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
+ add: remember last used theme (if save settings is enabled)
This commit is contained in:
parent
eb1a2ddbc4
commit
04e75bb6e0
@ -411,7 +411,7 @@
|
||||
#define IDS_MUI_LANG_ZH_CN 34516
|
||||
|
||||
#define IDS_MUI_MENU_THEMES 37000
|
||||
#define IDM_THEMES_DEFAULT 37001
|
||||
#define IDM_THEMES_DEFAULT 37001
|
||||
#define IDM_THEMES_FILE_ITEM 37002
|
||||
/// !!! dont use IDs until ...37100
|
||||
|
||||
|
||||
@ -286,13 +286,18 @@ bool GetKnownFolderPath(REFKNOWNFOLDERID, LPWSTR lpOutPath, size_t cchCount);
|
||||
void PathRelativeToApp(LPWSTR lpszSrc,LPWSTR lpszDest,int cchDest,bool,bool,bool);
|
||||
void PathAbsoluteFromApp(LPWSTR lpszSrc,LPWSTR lpszDest,int cchDest,bool);
|
||||
|
||||
|
||||
bool PathIsLnkFile(LPCWSTR pszPath);
|
||||
bool PathGetLnkPath(LPCWSTR pszLnkFile,LPWSTR pszResPath,int cchResPath);
|
||||
bool PathIsLnkToDirectory(LPCWSTR pszPath,LPWSTR pszResPath,int cchResPath);
|
||||
bool PathCreateDeskLnk(LPCWSTR pszDocument);
|
||||
bool PathCreateFavLnk(LPCWSTR pszName,LPCWSTR pszTarget,LPCWSTR pszDir);
|
||||
|
||||
void ExpandEnvironmentStringsEx(LPWSTR lpSrc, DWORD dwSrc);
|
||||
void PathCanonicalizeEx(LPWSTR lpszPath, DWORD cchBuffer);
|
||||
DWORD GetLongPathNameEx(LPWSTR lpszPath, DWORD cchBuffer);
|
||||
void PathGetDisplayName(LPWSTR lpszDestPath, DWORD cchDestBuffer, LPCWSTR lpszSourcePath);
|
||||
DWORD NormalizePathEx(LPWSTR lpszPath, DWORD cchBuffer, bool bRealPath, bool bSearchPathIfRelative);
|
||||
|
||||
|
||||
bool StrLTrim(LPWSTR pszSource,LPCWSTR pszTrimChars);
|
||||
|
||||
@ -322,13 +327,6 @@ void StrTab2Space(LPWSTR lpsz);
|
||||
void PathFixBackslashes(LPWSTR lpsz);
|
||||
|
||||
|
||||
void ExpandEnvironmentStringsEx(LPWSTR lpSrc,DWORD dwSrc);
|
||||
void PathCanonicalizeEx(LPWSTR lpszPath, DWORD cchBuffer);
|
||||
DWORD GetLongPathNameEx(LPWSTR lpszPath, DWORD cchBuffer);
|
||||
void PathGetDisplayName(LPWSTR lpszDestPath, DWORD cchDestBuffer, LPCWSTR lpszSourcePath);
|
||||
DWORD NormalizePathEx(LPWSTR lpszPath, DWORD cchBuffer, bool bRealPath, bool bSearchPathIfRelative);
|
||||
|
||||
|
||||
size_t FormatNumberStr(LPWSTR lpNumberStr, size_t cch, int fixedWidth);
|
||||
bool SetDlgItemIntEx(HWND hwnd,int nIdItem,UINT uValue);
|
||||
|
||||
|
||||
@ -7571,6 +7571,7 @@ void SaveSettings(bool bSaveSettingsNow)
|
||||
|
||||
Style_Save(); // Scintilla Styles
|
||||
|
||||
|
||||
int ResX, ResY;
|
||||
GetCurrentMonitorResolution(Globals.hwndMain, &ResX, &ResY);
|
||||
|
||||
|
||||
45
src/Styles.c
45
src/Styles.c
@ -121,7 +121,7 @@ static int s_cyStyleSelectDlg = STYLESELECTDLG_Y;
|
||||
typedef struct _themeFiles
|
||||
{
|
||||
UINT rid;
|
||||
WCHAR szFileName[80];
|
||||
WCHAR szName[80];
|
||||
WCHAR szFilePath[MAX_PATH];
|
||||
|
||||
} THEMEFILES, * PTHEMEFILES;
|
||||
@ -155,12 +155,10 @@ static THEMEFILES Theme_Files[] =
|
||||
{ 0, L"", L"" },
|
||||
{ 0, L"", L"" }
|
||||
};
|
||||
|
||||
unsigned ThemeItems_CountOf() { return COUNTOF(Theme_Files); }
|
||||
|
||||
|
||||
static unsigned s_idxSelectedTheme = 1; // Default(0), Standard(1)
|
||||
|
||||
const WCHAR* const STYLING_THEME_NAME = L"ThemeFileName";
|
||||
|
||||
static void _FillThemesMenuTable()
|
||||
{
|
||||
@ -168,12 +166,12 @@ static void _FillThemesMenuTable()
|
||||
|
||||
Theme_Files[0].rid = IDM_THEMES_DEFAULT; // factory default
|
||||
GetLngString(IDM_THEMES_DEFAULT, wchStdName, COUNTOF(wchStdName));
|
||||
StringCchCopy(Theme_Files[0].szFileName, COUNTOF(Theme_Files[0].szFileName), wchStdName);
|
||||
StringCchCopy(Theme_Files[0].szName, COUNTOF(Theme_Files[0].szName), wchStdName);
|
||||
StringCchCopy(Theme_Files[0].szFilePath, COUNTOF(Theme_Files[0].szFilePath), L"");
|
||||
|
||||
Theme_Files[1].rid = IDM_THEMES_FILE_ITEM; // NP3.ini settings
|
||||
GetLngString(IDM_THEMES_FILE_ITEM, wchStdName, COUNTOF(wchStdName));
|
||||
StringCchCopy(Theme_Files[1].szFileName, COUNTOF(Theme_Files[1].szFileName), wchStdName);
|
||||
StringCchCopy(Theme_Files[1].szName, COUNTOF(Theme_Files[1].szName), wchStdName);
|
||||
StringCchCopy(Theme_Files[1].szFilePath, COUNTOF(Theme_Files[1].szFilePath), Globals.IniFile);
|
||||
|
||||
unsigned iTheme = 1; // Standard
|
||||
@ -209,7 +207,7 @@ static void _FillThemesMenuTable()
|
||||
|
||||
StringCchCopy(tchThemePath, COUNTOF(tchThemePath), PathFindFileName(FindFileData.cFileName));
|
||||
PathRemoveExtension(tchThemePath);
|
||||
StringCchCopy(Theme_Files[iTheme].szFileName, COUNTOF(Theme_Files[iTheme].szFileName), tchThemePath);
|
||||
StringCchCopy(Theme_Files[iTheme].szName, COUNTOF(Theme_Files[iTheme].szName), tchThemePath);
|
||||
|
||||
StringCchCopy(tchThemePath, COUNTOF(tchThemePath), tchThemeDir);
|
||||
PathCchAppend(tchThemePath, COUNTOF(tchThemePath), FindFileData.cFileName);
|
||||
@ -220,16 +218,17 @@ static void _FillThemesMenuTable()
|
||||
}
|
||||
FindClose(hFindFile);
|
||||
}
|
||||
s_idxSelectedTheme = clampu(s_idxSelectedTheme, 0, iTheme);
|
||||
|
||||
for (++iTheme; iTheme < ThemeItems_CountOf(); ++iTheme) {
|
||||
for (++iTheme; iTheme < ThemeItems_CountOf(); ++iTheme)
|
||||
{
|
||||
Theme_Files[iTheme].rid = 0; // no themes available
|
||||
Theme_Files[iTheme].szFileName[0] = L'\0';
|
||||
Theme_Files[iTheme].szName[0] = L'\0';
|
||||
Theme_Files[iTheme].szFilePath[0] = L'\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Style_SetIniFile()
|
||||
@ -250,9 +249,9 @@ bool Style_InsertThemesMenu(HMENU hMenuBar)
|
||||
HMENU hmenuThemes = CreatePopupMenu();
|
||||
int const pos = GetMenuItemCount(hMenuBar) - 1;
|
||||
|
||||
AppendMenu(hmenuThemes, MF_ENABLED | MF_STRING, Theme_Files[0].rid, Theme_Files[0].szFileName);
|
||||
AppendMenu(hmenuThemes, MF_ENABLED | MF_STRING, Theme_Files[0].rid, Theme_Files[0].szName);
|
||||
|
||||
AppendMenu(hmenuThemes, MF_ENABLED | MF_STRING, Theme_Files[1].rid, Theme_Files[1].szFileName);
|
||||
AppendMenu(hmenuThemes, MF_ENABLED | MF_STRING, Theme_Files[1].rid, Theme_Files[1].szName);
|
||||
|
||||
for (unsigned i = 2; i < ThemeItems_CountOf(); ++i)
|
||||
{
|
||||
@ -260,7 +259,7 @@ bool Style_InsertThemesMenu(HMENU hMenuBar)
|
||||
AppendMenu(hmenuThemes, MF_SEPARATOR, 0, 0);
|
||||
}
|
||||
if (Theme_Files[i].rid > 0) {
|
||||
AppendMenu(hmenuThemes, MF_ENABLED | MF_STRING, Theme_Files[i].rid, Theme_Files[i].szFileName);
|
||||
AppendMenu(hmenuThemes, MF_ENABLED | MF_STRING, Theme_Files[i].rid, Theme_Files[i].szName);
|
||||
}
|
||||
else {
|
||||
break; // done
|
||||
@ -479,12 +478,25 @@ void Style_Load()
|
||||
s_colorDefault[14] = RGB(0xB0, 0x00, 0xB0);
|
||||
s_colorDefault[15] = RGB(0xB2, 0x8B, 0x40);
|
||||
|
||||
Style_ImportFromFile(Theme_Files[s_idxSelectedTheme].szFilePath);
|
||||
|
||||
// 2nd Default Style has same filename extension list as (1st) Default Style
|
||||
StringCchCopyW(lexStandard2nd.szExtensions, COUNTOF(lexStandard2nd.szExtensions), lexStandard.szExtensions);
|
||||
|
||||
_FillThemesMenuTable();
|
||||
|
||||
// get theme name from settings2
|
||||
WCHAR wchThemeName[80];
|
||||
IniGetString(L"Styles", STYLING_THEME_NAME, L"", wchThemeName, COUNTOF(wchThemeName));
|
||||
|
||||
unsigned iTheme = 1;
|
||||
if (StrIsNotEmpty(wchThemeName)) {
|
||||
for (; iTheme < ThemeItems_CountOf(); ++iTheme)
|
||||
{
|
||||
if (StringCchCompareXI(wchThemeName, Theme_Files[iTheme].szName) == 0) { break; }
|
||||
}
|
||||
}
|
||||
s_idxSelectedTheme = (iTheme < ThemeItems_CountOf()) ? iTheme : 1;
|
||||
|
||||
Style_ImportFromFile(Theme_Files[s_idxSelectedTheme].szFilePath);
|
||||
}
|
||||
|
||||
|
||||
@ -615,7 +627,8 @@ bool Style_ImportFromFile(const WCHAR* szFile)
|
||||
//
|
||||
void Style_Save()
|
||||
{
|
||||
Style_ExportToFile(Theme_Files[s_idxSelectedTheme].szFilePath, false);
|
||||
Style_ExportToFile(Theme_Files[s_idxSelectedTheme].szFilePath, false);
|
||||
IniSetString(L"Styles", STYLING_THEME_NAME, (s_idxSelectedTheme > 1) ? Theme_Files[s_idxSelectedTheme].szName : NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -29,7 +29,6 @@
|
||||
#define NUMLEXERS 49
|
||||
#define AVG_NUM_OF_STYLES_PER_LEXER 20
|
||||
|
||||
|
||||
void Style_Load();
|
||||
bool Style_Import(HWND hwnd);
|
||||
bool Style_ImportFromFile(const WCHAR* szFile);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user