COLORREF CColors::GetColor (Colors col, bool bDefault) { switch (col) { case DryRunConflict: { COLORREF c = GetColor(Conflict); static const int scale = 150; long red = MulDiv(GetRValue(c),(255-scale),255); long green = MulDiv(GetGValue(c),(255-scale),255); long blue = MulDiv(GetBValue(c),(255-scale),255); return RGB(red, green, blue); } break; default: { CRegDWORD* setting = GetRegistrySetting (col); if (setting == NULL) return RGB (0,0,0); return bDefault ? setting->defaultValue() : (DWORD)*setting; } } }
void CColors::SetColor (GDIPlusColor id, Color color) { CRegDWORD* setting = GetRegistrySetting (id); if (setting == NULL) return; *setting = color.GetValue(); // remove legacy info CRegDWORD* lecagySetting = GetLegacyRegistrySetting (id); if ((lecagySetting != NULL) && lecagySetting->exists()) lecagySetting->removeKey(); }
Color CColors::GetColor (GDIPlusColor id, bool bDefault) { CRegDWORD* setting = GetRegistrySetting (id); if (setting == NULL) return Color(); if (bDefault) return setting->defaultValue(); if (setting->exists()) return (DWORD)*setting; CRegDWORD* lecagySetting = GetLegacyRegistrySetting (id); if ((lecagySetting != NULL) && lecagySetting->exists()) { Color result; result.SetFromCOLORREF (*lecagySetting); return result; } return setting->defaultValue(); }
void CSettings::Migrate() { CRegDWORD oldEnableLogCaching (REGKEY15 ("UseLogCache"), TRUE); if (oldEnableLogCaching.exists()) { SetEnabled ((DWORD)oldEnableLogCaching != FALSE); oldEnableLogCaching.removeValue(); } CRegDWORD oldSupportAmbiguousURL (REGKEY15 ("SupportAmbiguousURL"), FALSE); if (oldSupportAmbiguousURL.exists()) { // Since the old default differs from the new one, // we will not migrate this setting. // // SetAllowAmbiguousURL ((DWORD)oldSupportAmbiguousURL != FALSE); oldSupportAmbiguousURL.removeValue(); } CRegDWORD oldDefaultConnectionState (REGKEY15 ("DefaultConnectionState"), 0); if (oldDefaultConnectionState.exists()) { ConnectionState state = static_cast<ConnectionState> ((DWORD)oldDefaultConnectionState); SetDefaultConnectionState (state); oldDefaultConnectionState.removeValue(); } CRegDWORD oldMaxHeadAge (REGKEY15 ("HeadCacheAgeLimit"), 0); if (oldMaxHeadAge.exists()) { SetMaxHeadAge ((DWORD)oldMaxHeadAge); oldMaxHeadAge.removeValue(); } // current registry format CRegDWORD (REGKEY ("Version")) = 160; }
void CTortoiseProcApp::CheckUpgrade() { CRegString regVersion = CRegString(_T("Software\\TortoiseGit\\CurrentVersion")); CString sVersion = regVersion; if (sVersion.Compare(_T(STRPRODUCTVER))==0) return; // we're starting the first time with a new version! LONG lVersion = 0; int pos = sVersion.Find(','); if (pos > 0) { lVersion = (_ttol(sVersion.Left(pos))<<24); lVersion |= (_ttol(sVersion.Mid(pos+1))<<16); pos = sVersion.Find(',', pos+1); lVersion |= (_ttol(sVersion.Mid(pos+1))<<8); } CRegDWORD regval = CRegDWORD(_T("Software\\TortoiseGit\\DontConvertBase"), 999); if ((DWORD)regval != 999) { // there's a leftover registry setting we have to convert and then delete it CRegDWORD newregval = CRegDWORD(_T("Software\\TortoiseGit\\ConvertBase")); newregval = !regval; regval.removeValue(); } #if 0 if (lVersion <= 0x01010300) { CSoundUtils::RegisterTSVNSounds(); // remove all saved dialog positions CRegString(_T("Software\\TortoiseGit\\TortoiseProc\\ResizableState\\")).removeKey(); CRegDWORD(_T("Software\\TortoiseGit\\RecursiveOverlay")).removeValue(); // remove the external cache key CRegDWORD(_T("Software\\TortoiseGit\\ExternalCache")).removeValue(); } #endif if (lVersion <= 0x01020200) { // upgrade to > 1.2.3 means the doc diff scripts changed from vbs to js // so remove the diff/merge scripts if they're the defaults CRegString diffreg = CRegString(_T("Software\\TortoiseGit\\DiffTools\\.doc")); CString sDiff = diffreg; CString sCL = _T("wscript.exe \"") + CPathUtils::GetAppParentDirectory()+_T("Diff-Scripts\\diff-doc.vbs\""); if (sDiff.Left(sCL.GetLength()).CompareNoCase(sCL)==0) diffreg = _T(""); CRegString mergereg = CRegString(_T("Software\\TortoiseGit\\MergeTools\\.doc")); sDiff = mergereg; sCL = _T("wscript.exe \"") + CPathUtils::GetAppParentDirectory()+_T("Diff-Scripts\\merge-doc.vbs\""); if (sDiff.Left(sCL.GetLength()).CompareNoCase(sCL)==0) mergereg = _T(""); } if (lVersion <= 0x01040000) { CRegStdDWORD(_T("Software\\TortoiseGit\\OwnerdrawnMenus")).removeValue(); } // set the custom diff scripts for every user CString scriptsdir = CPathUtils::GetAppParentDirectory(); scriptsdir += _T("Diff-Scripts"); CSimpleFileFind files(scriptsdir); while (files.FindNextFileNoDirectories()) { CString file = files.GetFilePath(); CString filename = files.GetFileName(); CString ext = file.Mid(file.ReverseFind('-')+1); ext = _T(".")+ext.Left(ext.ReverseFind('.')); CString kind; if (file.Right(3).CompareNoCase(_T("vbs"))==0) { kind = _T(" //E:vbscript"); } if (file.Right(2).CompareNoCase(_T("js"))==0) { kind = _T(" //E:javascript"); } if (filename.Left(5).CompareNoCase(_T("diff-"))==0) { CRegString diffreg = CRegString(_T("Software\\TortoiseGit\\DiffTools\\")+ext); CString diffregstring = diffreg; if ((diffregstring.IsEmpty()) || (diffregstring.Find(filename)>=0)) diffreg = _T("wscript.exe \"") + file + _T("\" %base %mine") + kind; } if (filename.Left(6).CompareNoCase(_T("merge-"))==0) { CRegString diffreg = CRegString(_T("Software\\TortoiseGit\\MergeTools\\")+ext); CString diffregstring = diffreg; if ((diffregstring.IsEmpty()) || (diffregstring.Find(filename)>=0)) diffreg = _T("wscript.exe \"") + file + _T("\" %merged %theirs %mine %base") + kind; } } // Initialize "Software\\TortoiseGit\\DiffProps" once with the same value as "Software\\TortoiseGit\\Diff" CRegString regDiffPropsPath = CRegString(_T("Software\\TortoiseGit\\DiffProps"),_T("non-existant")); CString strDiffPropsPath = regDiffPropsPath; if ( strDiffPropsPath==_T("non-existant") ) { CString strDiffPath = CRegString(_T("Software\\TortoiseGit\\Diff")); regDiffPropsPath = strDiffPath; } // set the current version so we don't come here again until the next update! regVersion = _T(STRPRODUCTVER); }