mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-04-13 20:28:31 +10:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6b33a70e4 | ||
|
|
179a59ac1b | ||
|
|
2a5ed14599 | ||
|
|
1cc5d2eb53 | ||
|
|
687e50914f | ||
|
|
a165ba38a6 | ||
|
|
6b7cfc5ab2 | ||
|
|
1f2c3d43a6 | ||
|
|
5bee5ae143 | ||
|
|
f01c126b36 | ||
|
|
3d1fa11973 |
@@ -3722,7 +3722,7 @@ Menu.RestartUpdate = Atualizar e reiniciar
|
|||||||
Menu.Sleep = &Dormir
|
Menu.Sleep = &Dormir
|
||||||
Menu.Hibernate = &Hibernar
|
Menu.Hibernate = &Hibernar
|
||||||
Menu.ControlPanel = &Painel de controle
|
Menu.ControlPanel = &Painel de controle
|
||||||
Menu.PCSettings = Configurações do computador
|
Menu.PCSettings = Configurações
|
||||||
Menu.Security = Segurança do Windows
|
Menu.Security = Segurança do Windows
|
||||||
Menu.Network = Co&nexões de Rede
|
Menu.Network = Co&nexões de Rede
|
||||||
Menu.Printers = &Impressoras
|
Menu.Printers = &Impressoras
|
||||||
|
|||||||
@@ -2,11 +2,10 @@
|
|||||||
|
|
||||||
*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)*
|
*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)*
|
||||||
|
|
||||||
[](https://github.com/Open-Shell/Open-Shell-Menu/releases) [](https://github.com/Open-Shell/Open-Shell-Menu/releases) [](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master) [](https://gitq.com/passionate-coder/Classic-Start) [](https://gitter.im/open-shell/Lobby) [](https://discord.gg/7H6arr5)
|
[](https://github.com/Open-Shell/Open-Shell-Menu/releases/latest) [](https://github.com/Open-Shell/Open-Shell-Menu/releases) [](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master) [](https://gitq.com/passionate-coder/Classic-Start) [](https://gitter.im/open-shell/Lobby) [](https://discord.gg/7H6arr5)
|
||||||
|
|
||||||
[Home Page](https://open-shell.github.io/Open-Shell-Menu)
|
[Home Page](https://open-shell.github.io/Open-Shell-Menu)
|
||||||
[Gitter Discussion room](https://gitter.im/Open-Shell)
|
[Gitter Discussion room](https://gitter.im/Open-Shell)
|
||||||
[Latest nightly build](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master/artifacts)
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
- Classic style Start Menu for Windows 7, 8, 8.1, 10
|
- Classic style Start Menu for Windows 7, 8, 8.1, 10
|
||||||
|
|||||||
@@ -344,7 +344,7 @@ static DWORD WINAPI ThreadVersionCheck( void *param )
|
|||||||
VersionData data;
|
VersionData data;
|
||||||
|
|
||||||
{
|
{
|
||||||
auto load = params.nightly ? data.LoadNightly() : data.Load();
|
auto load = data.Load(!params.nightly);
|
||||||
|
|
||||||
#ifdef UPDATE_LOG
|
#ifdef UPDATE_LOG
|
||||||
LogToFile(UPDATE_LOG, L"Load result: %d", load);
|
LogToFile(UPDATE_LOG, L"Load result: %d", load);
|
||||||
@@ -765,20 +765,38 @@ std::vector<char> DownloadUrl(const wchar_t* url)
|
|||||||
|
|
||||||
using namespace nlohmann;
|
using namespace nlohmann;
|
||||||
|
|
||||||
VersionData::TLoadResult VersionData::Load()
|
VersionData::TLoadResult VersionData::Load(bool official)
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
auto buf = DownloadUrl(L"https://api.github.com/repos/Open-Shell/Open-Shell-Menu/releases/latest");
|
std::wstring baseUrl = L"https://api.github.com/repos/Open-Shell/Open-Shell-Menu/releases";
|
||||||
|
if (official)
|
||||||
|
baseUrl += L"/latest";
|
||||||
|
|
||||||
|
auto buf = DownloadUrl(baseUrl.c_str());
|
||||||
if (buf.empty())
|
if (buf.empty())
|
||||||
return LOAD_ERROR;
|
return LOAD_ERROR;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
auto data = json::parse(buf.begin(), buf.end());
|
auto jsonData = json::parse(buf.begin(), buf.end());
|
||||||
|
auto& data = jsonData;
|
||||||
|
|
||||||
// skip prerelease versions
|
if (official)
|
||||||
if (data["prerelease"].get<bool>())
|
{
|
||||||
|
// skip prerelease versions (just in case)
|
||||||
|
if (data["prerelease"].get<bool>())
|
||||||
|
return LOAD_BAD_VERSION;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// we've got list of versions (release and pre-release)
|
||||||
|
// lets pick first one (that should be the latest one)
|
||||||
|
data = jsonData[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure we didn't get draft release (for whatever reason)
|
||||||
|
if (data["draft"].get<bool>())
|
||||||
return LOAD_BAD_VERSION;
|
return LOAD_BAD_VERSION;
|
||||||
|
|
||||||
// get version from tag name
|
// get version from tag name
|
||||||
@@ -832,116 +850,6 @@ VersionData::TLoadResult VersionData::Load()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VersionData::TLoadResult VersionData::LoadNightly()
|
|
||||||
{
|
|
||||||
Clear();
|
|
||||||
|
|
||||||
auto buf = DownloadUrl(L"https://ci.appveyor.com/api/projects/passionate-coder/open-shell-menu/branch/master");
|
|
||||||
if (buf.empty())
|
|
||||||
return LOAD_ERROR;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
auto data = json::parse(buf.begin(), buf.end());
|
|
||||||
auto build = data["build"];
|
|
||||||
|
|
||||||
// get version
|
|
||||||
auto version = build["version"].get<std::string>();
|
|
||||||
if (version.empty())
|
|
||||||
return LOAD_BAD_FILE;
|
|
||||||
|
|
||||||
{
|
|
||||||
int v1, v2, v3;
|
|
||||||
if (sscanf_s(version.c_str(), "%d.%d.%d", &v1, &v2, &v3) != 3)
|
|
||||||
return LOAD_BAD_FILE;
|
|
||||||
|
|
||||||
newVersion = (v1 << 24) | (v2 << 16) | v3;
|
|
||||||
|
|
||||||
if (newVersion <= GetVersionEx(g_Instance))
|
|
||||||
return LOAD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// artifact url
|
|
||||||
{
|
|
||||||
auto jobId = build["jobs"][0]["jobId"].get<std::string>();
|
|
||||||
if (jobId.empty())
|
|
||||||
return LOAD_BAD_FILE;
|
|
||||||
|
|
||||||
std::wstring jobUrl(L"https://ci.appveyor.com/api/buildjobs/");
|
|
||||||
jobUrl += std::wstring(jobId.begin(), jobId.end());
|
|
||||||
jobUrl += L"/artifacts";
|
|
||||||
|
|
||||||
buf = DownloadUrl(jobUrl.c_str());
|
|
||||||
if (buf.empty())
|
|
||||||
return LOAD_ERROR;
|
|
||||||
|
|
||||||
auto artifacts = json::parse(buf.begin(), buf.end());
|
|
||||||
|
|
||||||
std::string fileName;
|
|
||||||
for (const auto& artifact : artifacts)
|
|
||||||
{
|
|
||||||
auto name = artifact["fileName"].get<std::string>();
|
|
||||||
if (name.find("OpenShellSetup") == 0)
|
|
||||||
{
|
|
||||||
fileName = name;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fileName.empty())
|
|
||||||
return LOAD_BAD_FILE;
|
|
||||||
|
|
||||||
auto artifactUrl(jobUrl);
|
|
||||||
artifactUrl += L'/';
|
|
||||||
artifactUrl += std::wstring(fileName.begin(), fileName.end());
|
|
||||||
|
|
||||||
downloadUrl = artifactUrl.c_str();
|
|
||||||
}
|
|
||||||
|
|
||||||
// changelog
|
|
||||||
news.Append(CA2T(version.c_str()));
|
|
||||||
news.Append(L"\r\n\r\n");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// use Github API to compare commit that actual version was built from (APPVEYOR_REPO_COMMIT)
|
|
||||||
// and commit that AppVeyor version was built from (commitId)
|
|
||||||
auto commitId = build["commitId"].get<std::string>();
|
|
||||||
|
|
||||||
std::wstring compareUrl(L"https://api.github.com/repos/Open-Shell/Open-Shell-Menu/compare/");
|
|
||||||
compareUrl += _T(APPVEYOR_REPO_COMMIT);
|
|
||||||
compareUrl += L"...";
|
|
||||||
compareUrl += std::wstring(commitId.begin(), commitId.end());
|
|
||||||
|
|
||||||
buf = DownloadUrl(compareUrl.c_str());
|
|
||||||
auto compare = json::parse(buf.begin(), buf.end());
|
|
||||||
|
|
||||||
// then use first lines (subjects) of commit messages as changelog
|
|
||||||
auto commits = compare["commits"];
|
|
||||||
for (const auto& commit : commits)
|
|
||||||
{
|
|
||||||
auto message = commit["commit"]["message"].get<std::string>();
|
|
||||||
|
|
||||||
auto pos = message.find('\n');
|
|
||||||
if (pos != message.npos)
|
|
||||||
message.resize(pos);
|
|
||||||
|
|
||||||
news.Append(L"- ");
|
|
||||||
news.Append(CA2T(message.c_str()));
|
|
||||||
news.Append(L"\r\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
return LOAD_BAD_FILE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return LOAD_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
VersionData::TLoadResult VersionData::Load( const wchar_t *fname, bool bLoadFlags )
|
VersionData::TLoadResult VersionData::Load( const wchar_t *fname, bool bLoadFlags )
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
|
|||||||
@@ -59,8 +59,7 @@ struct VersionData
|
|||||||
LOAD_BAD_FILE, // the file is corrupted
|
LOAD_BAD_FILE, // the file is corrupted
|
||||||
};
|
};
|
||||||
|
|
||||||
TLoadResult Load();
|
TLoadResult Load(bool official);
|
||||||
TLoadResult LoadNightly();
|
|
||||||
TLoadResult Load( const wchar_t *fname, bool bLoadFlags );
|
TLoadResult Load( const wchar_t *fname, bool bLoadFlags );
|
||||||
private:
|
private:
|
||||||
void operator=( const VersionData& );
|
void operator=( const VersionData& );
|
||||||
|
|||||||
@@ -793,10 +793,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
|
|||||||
}
|
}
|
||||||
string.push_back(0);
|
string.push_back(0);
|
||||||
pSetting->value=CComVariant(&string[0]);
|
pSetting->value=CComVariant(&string[0]);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -809,10 +806,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
|
|||||||
if (pSetting->type>=CSetting::TYPE_STRING)
|
if (pSetting->type>=CSetting::TYPE_STRING)
|
||||||
{
|
{
|
||||||
pSetting->value=value;
|
pSetting->value=value;
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_BOOL || (pSetting->type==CSetting::TYPE_INT && pSetting[1].type!=CSetting::TYPE_RADIO) || pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY || pSetting->type==CSetting::TYPE_COLOR)
|
else if (pSetting->type==CSetting::TYPE_BOOL || (pSetting->type==CSetting::TYPE_INT && pSetting[1].type!=CSetting::TYPE_RADIO) || pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY || pSetting->type==CSetting::TYPE_COLOR)
|
||||||
{
|
{
|
||||||
@@ -821,10 +815,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
|
|||||||
pSetting->value=CComVariant(val?1:0);
|
pSetting->value=CComVariant(val?1:0);
|
||||||
else
|
else
|
||||||
pSetting->value=CComVariant(val);
|
pSetting->value=CComVariant(val);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_INT && pSetting[1].type==CSetting::TYPE_RADIO)
|
else if (pSetting->type==CSetting::TYPE_INT && pSetting[1].type==CSetting::TYPE_RADIO)
|
||||||
{
|
{
|
||||||
@@ -834,10 +825,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
|
|||||||
if (_wcsicmp(pRadio->name,value.bstrVal)==0)
|
if (_wcsicmp(pRadio->name,value.bstrVal)==0)
|
||||||
{
|
{
|
||||||
pSetting->value=CComVariant(val);
|
pSetting->value=CComVariant(val);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1828,10 +1828,7 @@ void CCustomTreeDlg::SerializeData( void )
|
|||||||
if ((m_pSetting->flags&CSetting::FLAG_DEFAULT) || wcscmp(strNew,strOld)!=0)
|
if ((m_pSetting->flags&CSetting::FLAG_DEFAULT) || wcscmp(strNew,strOld)!=0)
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
m_pSetting->value=CComVariant(strNew);
|
m_pSetting->value=CComVariant(strNew);
|
||||||
if (m_pSetting->value==m_pSetting->defValue)
|
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
ItemsChanged();
|
ItemsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2811,10 +2808,7 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
|
|||||||
{
|
{
|
||||||
CSettingsLockWrite lock;
|
CSettingsLockWrite lock;
|
||||||
pSetting->value=CComVariant(state?0:1);
|
pSetting->value=CComVariant(state?0:1);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
}
|
}
|
||||||
if (pSetting->flags&CSetting::FLAG_CALLBACK)
|
if (pSetting->flags&CSetting::FLAG_CALLBACK)
|
||||||
@@ -2838,10 +2832,7 @@ void CTreeSettingsDlg::ToggleItem( HTREEITEM hItem, bool bDefault )
|
|||||||
{
|
{
|
||||||
CSettingsLockWrite lock;
|
CSettingsLockWrite lock;
|
||||||
pTarget->value=CComVariant(val);
|
pTarget->value=CComVariant(val);
|
||||||
if (pTarget->value==pTarget->defValue)
|
pTarget->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pTarget->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pTarget->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
}
|
}
|
||||||
if (pParent->flags&CSetting::FLAG_CALLBACK)
|
if (pParent->flags&CSetting::FLAG_CALLBACK)
|
||||||
@@ -3052,10 +3043,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
|
|||||||
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
|
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
|
||||||
{
|
{
|
||||||
pSetting->value=CComVariant(val);
|
pSetting->value=CComVariant(val);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_COLOR)
|
else if (pSetting->type==CSetting::TYPE_COLOR)
|
||||||
@@ -3065,10 +3053,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
|
|||||||
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
|
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val)
|
||||||
{
|
{
|
||||||
pSetting->value=CComVariant(val);
|
pSetting->value=CComVariant(val);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
|
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
|
||||||
@@ -3076,10 +3061,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
|
|||||||
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=g_HotKey)
|
if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=g_HotKey)
|
||||||
{
|
{
|
||||||
pSetting->value=CComVariant(g_HotKey);
|
pSetting->value=CComVariant(g_HotKey);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_DIRECTORY)
|
else if (pSetting->type==CSetting::TYPE_DIRECTORY)
|
||||||
@@ -3101,10 +3083,7 @@ void CTreeSettingsDlg::ApplyEditBox( void )
|
|||||||
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
|
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
|
||||||
{
|
{
|
||||||
pSetting->value=CComVariant(str);
|
pSetting->value=CComVariant(str);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
|
|||||||
13789
Src/Lib/json.hpp
13789
Src/Lib/json.hpp
File diff suppressed because it is too large
Load Diff
@@ -561,6 +561,7 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
|
|||||||
else if (wcsstr(lpstrCmdLine,L"-toggle")!=NULL) open=MSG_TOGGLE;
|
else if (wcsstr(lpstrCmdLine,L"-toggle")!=NULL) open=MSG_TOGGLE;
|
||||||
else if (wcsstr(lpstrCmdLine,L"-open")!=NULL) open=MSG_OPEN;
|
else if (wcsstr(lpstrCmdLine,L"-open")!=NULL) open=MSG_OPEN;
|
||||||
else if (wcsstr(lpstrCmdLine,L"-settings")!=NULL) open=MSG_SETTINGS;
|
else if (wcsstr(lpstrCmdLine,L"-settings")!=NULL) open=MSG_SETTINGS;
|
||||||
|
else if (wcsstr(lpstrCmdLine,L"-reloadsettings")!=NULL) open=MSG_RELOADSETTINGS;
|
||||||
else if (wcsstr(lpstrCmdLine,L"-exit")!=NULL) open=MSG_EXIT;
|
else if (wcsstr(lpstrCmdLine,L"-exit")!=NULL) open=MSG_EXIT;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -903,7 +903,7 @@ HRESULT STDMETHODCALLTYPE CMenuContainer::Drop( IDataObject *pDataObj, DWORD grf
|
|||||||
else if (i<before)
|
else if (i<before)
|
||||||
skip++;
|
skip++;
|
||||||
}
|
}
|
||||||
SortMenuItem ins(L"",FNV_HASH0,false,false,false,folderIndex*2,0);
|
SortMenuItem ins(L"",FNV_HASH0,false,false,folderIndex*2,0);
|
||||||
items.insert(items.begin()+(before-skip),ins);
|
items.insert(items.begin()+(before-skip),ins);
|
||||||
SaveItemOrder(items);
|
SaveItemOrder(items);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -861,8 +861,7 @@ void CMenuContainer::AddFirstFolder( IShellItem *pFolder, std::vector<MenuItem>
|
|||||||
|
|
||||||
if (bLibrary) flags&=~SFGAO_STREAM;
|
if (bLibrary) flags&=~SFGAO_STREAM;
|
||||||
item.bLink=(flags&SFGAO_LINK)!=0;
|
item.bLink=(flags&SFGAO_LINK)!=0;
|
||||||
item.bFolderLink=(flags&SFGAO_FOLDER && (!(flags&(SFGAO_STREAM|SFGAO_LINK)) || (s_bExpandLinks && item.bLink)));
|
item.bFolder=(!(options&CONTAINER_CONTROLPANEL) && !(options&CONTAINER_NOSUBFOLDERS) && (flags&SFGAO_FOLDER) && (!(flags&(SFGAO_STREAM|SFGAO_LINK)) || (s_bExpandLinks && item.bLink)));
|
||||||
item.bFolder=(!(options&CONTAINER_CONTROLPANEL) && !(options&CONTAINER_NOSUBFOLDERS) && item.bFolderLink);
|
|
||||||
{
|
{
|
||||||
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
|
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
|
||||||
if (item.pItemInfo->IsMetroLink())
|
if (item.pItemInfo->IsMetroLink())
|
||||||
|
|||||||
@@ -453,7 +453,7 @@ private:
|
|||||||
drawType=MenuSkin::COLUMN1_ITEM;
|
drawType=MenuSkin::COLUMN1_ITEM;
|
||||||
column=row=0;
|
column=row=0;
|
||||||
memset(&itemRect,0,sizeof(itemRect));
|
memset(&itemRect,0,sizeof(itemRect));
|
||||||
bFolder=bLink=bFolderLink=bPrograms=bAlignBottom=bBreak=bInline=bInlineFirst=bInlineLast=bSplit=bHasJumpList=bMetroLink=bMetroApp=bBlankSeparator=bNew=bStartScreen=bCustomAccelerator=false;
|
bFolder=bLink=bPrograms=bAlignBottom=bBreak=bInline=bInlineFirst=bInlineLast=bSplit=bHasJumpList=bMetroLink=bMetroApp=bBlankSeparator=bNew=bStartScreen=bCustomAccelerator=false;
|
||||||
priority=0;
|
priority=0;
|
||||||
pItem1=pItem2=NULL;
|
pItem1=pItem2=NULL;
|
||||||
mfuHash=0;
|
mfuHash=0;
|
||||||
@@ -477,7 +477,6 @@ private:
|
|||||||
RECT itemRect;
|
RECT itemRect;
|
||||||
bool bFolder:1; // this is a folder - draw arrow
|
bool bFolder:1; // this is a folder - draw arrow
|
||||||
bool bLink:1; // this is a link (if a link to a folder is expanded it is always single-column)
|
bool bLink:1; // this is a link (if a link to a folder is expanded it is always single-column)
|
||||||
bool bFolderLink:1; // this is a folder that is not explicitly expandable - used for sorting the list-of-links style
|
|
||||||
bool bPrograms:1; // this item is part of the Start Menu folder hierarchy
|
bool bPrograms:1; // this item is part of the Start Menu folder hierarchy
|
||||||
bool bAlignBottom:1; // two-column menu: this item is aligned to the bottom
|
bool bAlignBottom:1; // two-column menu: this item is aligned to the bottom
|
||||||
bool bBreak:1; // two-column menu: this item starts the second column
|
bool bBreak:1; // two-column menu: this item starts the second column
|
||||||
@@ -513,8 +512,8 @@ private:
|
|||||||
if (priority>item.priority) return false;
|
if (priority>item.priority) return false;
|
||||||
if (row<item.row) return true;
|
if (row<item.row) return true;
|
||||||
if (row>item.row) return false;
|
if (row>item.row) return false;
|
||||||
if (((bFolder || bFolderLink) && !bHasJumpList) && !((item.bFolder || item.bFolderLink) && !item.bHasJumpList)) return true;
|
if ((bFolder && !bHasJumpList) && !(item.bFolder && !item.bHasJumpList)) return true;
|
||||||
if (!((bFolder || bFolderLink) && !bHasJumpList) && ((item.bFolder || item.bFolderLink) && !item.bHasJumpList)) return false;
|
if (!(bFolder && !bHasJumpList) && (item.bFolder && !item.bHasJumpList)) return false;
|
||||||
if (drive && !item.drive) return true;
|
if (drive && !item.drive) return true;
|
||||||
if (!drive && item.drive) return false;
|
if (!drive && item.drive) return false;
|
||||||
if (drive && item.drive) return drive<item.drive;
|
if (drive && item.drive) return drive<item.drive;
|
||||||
@@ -579,19 +578,18 @@ private:
|
|||||||
CString name;
|
CString name;
|
||||||
unsigned int nameHash;
|
unsigned int nameHash;
|
||||||
bool bFolder;
|
bool bFolder;
|
||||||
bool bFolderLink;
|
|
||||||
bool bHasJumpList;
|
bool bHasJumpList;
|
||||||
char priority;
|
char priority;
|
||||||
char drive;
|
char drive;
|
||||||
|
|
||||||
SortMenuItem( const CString &_name, unsigned _nameHash, bool _bFolder, bool _bFolderLink, bool _bHasJumpList, char _priority ,char _drive) { name=_name; nameHash=_nameHash; bFolder=_bFolder; bFolderLink=_bFolderLink; bHasJumpList=_bHasJumpList; priority=_priority; drive=_drive; }
|
SortMenuItem( const CString &_name, unsigned _nameHash, bool _bFolder, bool _bHasJumpList, char _priority ,char _drive) { name=_name; nameHash=_nameHash; bFolder=_bFolder; bHasJumpList=_bHasJumpList; priority=_priority; drive=_drive; }
|
||||||
SortMenuItem( const MenuItem &item ) { name=item.name; nameHash=item.nameHash; bFolder=item.bFolder; bFolderLink=item.bFolderLink; bHasJumpList=item.bHasJumpList; priority=item.priority; drive=item.drive; }
|
SortMenuItem( const MenuItem &item ) { name=item.name; nameHash=item.nameHash; bFolder=item.bFolder; bHasJumpList=item.bHasJumpList; priority=item.priority; drive=item.drive; }
|
||||||
bool operator<( const SortMenuItem &x ) const
|
bool operator<( const SortMenuItem &x ) const
|
||||||
{
|
{
|
||||||
if (priority<x.priority) return true;
|
if (priority<x.priority) return true;
|
||||||
if (priority>x.priority) return false;
|
if (priority>x.priority) return false;
|
||||||
if (((bFolder || bFolderLink) && !bHasJumpList) && !((x.bFolder || x.bFolderLink) && !x.bHasJumpList)) return true;
|
if ((bFolder && !bHasJumpList) && !(x.bFolder && !x.bHasJumpList)) return true;
|
||||||
if (!((bFolder || bFolderLink) && !bHasJumpList) && ((x.bFolder || x.bFolderLink) && !x.bHasJumpList)) return false;
|
if (!(bFolder && !bHasJumpList) && (x.bFolder && !x.bHasJumpList)) return false;
|
||||||
if (drive && !x.drive) return true;
|
if (drive && !x.drive) return true;
|
||||||
if (!drive && x.drive) return false;
|
if (!drive && x.drive) return false;
|
||||||
if (drive && x.drive) return drive<x.drive;
|
if (drive && x.drive) return drive<x.drive;
|
||||||
|
|||||||
@@ -3624,10 +3624,7 @@ void CCustomMenuDlg7::SerializeData( void )
|
|||||||
stringBuilder.push_back(0);
|
stringBuilder.push_back(0);
|
||||||
CSettingsLockWrite lock;
|
CSettingsLockWrite lock;
|
||||||
m_pSetting->value=CComVariant(&stringBuilder[0]);
|
m_pSetting->value=CComVariant(&stringBuilder[0]);
|
||||||
if (m_pSetting->value==m_pSetting->defValue)
|
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
m_pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3854,10 +3851,7 @@ LRESULT CMenuStyleDlg::OnClick( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
|
|||||||
CheckDlgButton(IDC_RADIO_CLASSIC,pSetting->value.intVal==MENU_CLASSIC1?BST_CHECKED:BST_UNCHECKED);
|
CheckDlgButton(IDC_RADIO_CLASSIC,pSetting->value.intVal==MENU_CLASSIC1?BST_CHECKED:BST_UNCHECKED);
|
||||||
CheckDlgButton(IDC_RADIO_TWO_COLUMNS,pSetting->value.intVal==MENU_CLASSIC2?BST_CHECKED:BST_UNCHECKED);
|
CheckDlgButton(IDC_RADIO_TWO_COLUMNS,pSetting->value.intVal==MENU_CLASSIC2?BST_CHECKED:BST_UNCHECKED);
|
||||||
CheckDlgButton(IDC_RADIO_WIN7,pSetting->value.intVal==MENU_WIN7?BST_CHECKED:BST_UNCHECKED);
|
CheckDlgButton(IDC_RADIO_WIN7,pSetting->value.intVal==MENU_WIN7?BST_CHECKED:BST_UNCHECKED);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
|
|
||||||
SetSettingsStyle(styleFlag,CSetting::FLAG_MENU_MASK);
|
SetSettingsStyle(styleFlag,CSetting::FLAG_MENU_MASK);
|
||||||
@@ -3875,10 +3869,7 @@ LRESULT CMenuStyleDlg::OnEnabled( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL
|
|||||||
CSettingsLockWrite lock;
|
CSettingsLockWrite lock;
|
||||||
CSetting *pSetting=FindSetting(L"EnableStartButton");
|
CSetting *pSetting=FindSetting(L"EnableStartButton");
|
||||||
pSetting->value=CComVariant(bEnabled);
|
pSetting->value=CComVariant(bEnabled);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
}
|
}
|
||||||
Update(false);
|
Update(false);
|
||||||
@@ -3917,10 +3908,7 @@ LRESULT CMenuStyleDlg::OnButtonStyle( WORD wNotifyCode, WORD wID, HWND hWndCtl,
|
|||||||
CSettingsLockWrite lock;
|
CSettingsLockWrite lock;
|
||||||
CSetting *pSetting=FindSetting(L"StartButtonType");
|
CSetting *pSetting=FindSetting(L"StartButtonType");
|
||||||
pSetting->value=CComVariant(style);
|
pSetting->value=CComVariant(style);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
}
|
}
|
||||||
Update(false);
|
Update(false);
|
||||||
@@ -3944,10 +3932,7 @@ LRESULT CMenuStyleDlg::OnPick( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& b
|
|||||||
CSettingsLockWrite lock;
|
CSettingsLockWrite lock;
|
||||||
CSetting *pSetting=FindSetting(L"StartButtonPath");
|
CSetting *pSetting=FindSetting(L"StartButtonPath");
|
||||||
pSetting->value=CComVariant(path);
|
pSetting->value=CComVariant(path);
|
||||||
if (pSetting->value==pSetting->defValue)
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
}
|
}
|
||||||
Update(true);
|
Update(true);
|
||||||
@@ -4586,10 +4571,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
items.Replace(L"Command=recent_items\n",L"Command=recent_programs\n");
|
items.Replace(L"Command=recent_items\n",L"Command=recent_programs\n");
|
||||||
items.Replace(L"Command=control_panel_categories\n",L"Command=control_panel\n");
|
items.Replace(L"Command=control_panel_categories\n",L"Command=control_panel\n");
|
||||||
pSettingItems->value=items;
|
pSettingItems->value=items;
|
||||||
if (pSettingItems->value==pSettingItems->defValue)
|
pSettingItems->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingItems->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingItems->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// set initial menu style
|
// set initial menu style
|
||||||
@@ -4597,10 +4579,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSettingStyle->IsLocked())
|
if (!pSettingStyle->IsLocked())
|
||||||
{
|
{
|
||||||
pSettingStyle->value=(bTwoColumns?1:0);
|
pSettingStyle->value=(bTwoColumns?1:0);
|
||||||
if (pSettingStyle->value==pSettingStyle->defValue)
|
pSettingStyle->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingStyle->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingStyle->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
SetSettingsStyle(bTwoColumns?CSetting::FLAG_MENU_CLASSIC2:CSetting::FLAG_MENU_CLASSIC1,CSetting::FLAG_MENU_MASK);
|
SetSettingsStyle(bTwoColumns?CSetting::FLAG_MENU_CLASSIC2:CSetting::FLAG_MENU_CLASSIC1,CSetting::FLAG_MENU_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4612,10 +4591,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSetting->IsDefault())
|
if (!pSetting->IsDefault())
|
||||||
{
|
{
|
||||||
pSettingSkin->value=pSetting->value;
|
pSettingSkin->value=pSetting->value;
|
||||||
if (pSettingSkin->value==pSettingSkin->defValue)
|
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingSkin->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CSetting *pSettingOpt=FindSetting(bTwoColumns?L"SkinOptionsC2":L"SkinOptionsC1");
|
CSetting *pSettingOpt=FindSetting(bTwoColumns?L"SkinOptionsC2":L"SkinOptionsC1");
|
||||||
@@ -4625,10 +4601,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSetting->IsDefault())
|
if (!pSetting->IsDefault())
|
||||||
{
|
{
|
||||||
pSettingOpt->value=pSetting->value;
|
pSettingOpt->value=pSetting->value;
|
||||||
if (pSettingOpt->value==pSettingOpt->defValue)
|
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingOpt->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CSetting *pSettingVar=FindSetting(bTwoColumns?L"SkinVariationC2":L"SkinVariationC1");
|
CSetting *pSettingVar=FindSetting(bTwoColumns?L"SkinVariationC2":L"SkinVariationC1");
|
||||||
@@ -4638,10 +4611,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSetting->IsDefault())
|
if (!pSetting->IsDefault())
|
||||||
{
|
{
|
||||||
pSettingVar->value=pSetting->value;
|
pSettingVar->value=pSetting->value;
|
||||||
if (pSettingVar->value==pSettingVar->defValue)
|
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingVar->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4653,10 +4623,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSetting->IsDefault())
|
if (!pSetting->IsDefault())
|
||||||
{
|
{
|
||||||
pSettingSkin->value=pSetting->value;
|
pSettingSkin->value=pSetting->value;
|
||||||
if (pSettingSkin->value==pSettingSkin->defValue)
|
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingSkin->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingSkin->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pSettingOpt=FindSetting(L"SkinOptionsA");
|
pSettingOpt=FindSetting(L"SkinOptionsA");
|
||||||
@@ -4666,10 +4633,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSetting->IsDefault())
|
if (!pSetting->IsDefault())
|
||||||
{
|
{
|
||||||
pSettingOpt->value=pSetting->value;
|
pSettingOpt->value=pSetting->value;
|
||||||
if (pSettingOpt->value==pSettingOpt->defValue)
|
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingOpt->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingOpt->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pSettingVar=FindSetting(L"SkinVariationA");
|
pSettingVar=FindSetting(L"SkinVariationA");
|
||||||
@@ -4679,10 +4643,7 @@ void UpgradeSettings( bool bShared )
|
|||||||
if (!pSetting->IsDefault())
|
if (!pSetting->IsDefault())
|
||||||
{
|
{
|
||||||
pSettingVar->value=pSetting->value;
|
pSettingVar->value=pSetting->value;
|
||||||
if (pSettingVar->value==pSettingVar->defValue)
|
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
pSettingVar->flags|=CSetting::FLAG_DEFAULT;
|
|
||||||
else
|
|
||||||
pSettingVar->flags&=~CSetting::FLAG_DEFAULT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1300,7 +1300,7 @@ BEGIN
|
|||||||
IDS_NO_DBLCLICK "Single-click to open folder shortcuts"
|
IDS_NO_DBLCLICK "Single-click to open folder shortcuts"
|
||||||
IDS_NO_DBLCLICK_TIP "When this is checked, single-clicking shortcuts (links) to folders will open them in explorer. Hovering over the shortcut will still expand sub-menus"
|
IDS_NO_DBLCLICK_TIP "When this is checked, single-clicking shortcuts (links) to folders will open them in explorer. Hovering over the shortcut will still expand sub-menus"
|
||||||
IDS_BOLD_SETTINGS "Highlight modified settings"
|
IDS_BOLD_SETTINGS "Highlight modified settings"
|
||||||
IDS_BOLD_SETTINGS_TIP "When this is checked, settings that have been modified from their defaults will be highlighted in bold"
|
IDS_BOLD_SETTINGS_TIP "When this is checked, settings that have been modified will be highlighted in bold"
|
||||||
IDS_SEARCH_HINT "Custom search hint"
|
IDS_SEARCH_HINT "Custom search hint"
|
||||||
IDS_SEARCH_HINT_TIP "When this is checked, the hint text in the search box will be replaced"
|
IDS_SEARCH_HINT_TIP "When this is checked, the hint text in the search box will be replaced"
|
||||||
IDS_NEW_SEARCH_HINT "Custom search hint text"
|
IDS_NEW_SEARCH_HINT "Custom search hint text"
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ deploy:
|
|||||||
- provider: GitHub
|
- provider: GitHub
|
||||||
tag: v$(APPVEYOR_BUILD_VERSION)
|
tag: v$(APPVEYOR_BUILD_VERSION)
|
||||||
release: $(APPVEYOR_BUILD_VERSION)
|
release: $(APPVEYOR_BUILD_VERSION)
|
||||||
|
on:
|
||||||
|
APPVEYOR_ACCOUNT_NAME: passionate-coder
|
||||||
auth_token:
|
auth_token:
|
||||||
secure: 01CsOFRdj9KFb1hp/RlFK/F1UzGhzwGQfok6OoqcL1ipbOwRF//Phbdm7iaFVWIx
|
secure: D0QZnRZfea3qJlWOwrxE6M2jrbiSrOfz/6U7RzdeeG8N0qNDFKI7LFjYyw2I/PcR
|
||||||
prerelease: true
|
prerelease: true
|
||||||
|
|||||||
Reference in New Issue
Block a user