=================================================================== Cannot display: file marked as a binary type. svn:mime-type = image/png Index: trunk/doc/images/SettingsOverlay.png =================================================================== diff --git a/trunk/doc/images/SettingsOverlay.png b/trunk/doc/images/SettingsOverlay.png GIT binary patch --- a/trunk/doc/images/SettingsOverlay.png (revision 1487) +++ b/trunk/doc/images/SettingsOverlay.png (revision 1488) Index: trunk/doc/source/de/tsvn_ch04.xml =================================================================== diff --git a/trunk/doc/source/de/tsvn_ch04.xml b/trunk/doc/source/de/tsvn_ch04.xml --- a/trunk/doc/source/de/tsvn_ch04.xml (revision 1487) +++ b/trunk/doc/source/de/tsvn_ch04.xml (revision 1488) @@ -1561,39 +1561,49 @@ </figure> Abgesehen von der bevorzugten Sprache erlaubt dieser Dialog es Ihnen, (fast) alle Einstellungen von TortoiseSVN zu ändern. -### Translate ### <variablelist> <varlistentry> - <term>Language</term> - <listitem> - <para>Selects your user interface language. What did you expect?</para> + <term>Sprache</term> + <listitem> + <para>Wählt die Sprache für die Dialoge/Meldungen aus. Was + haben Sie anderes erwartet?</para> </listitem> </varlistentry> <varlistentry> - <term>Exclude pattern</term> + <term>Ausschliessen</term> <listitem> <para> <indexterm> - <primary>exclude pattern</primary> + <primary>ausschliessen</primary> </indexterm> - Exclude files or directories by typing in the names or extensions. Patterns are separated by spaces - e.g. <literal>bin obj *.bak *.~?? *.jar *.[Tt]mp</literal>. The first two entries refer to directories, the - other four to files. - </para> - <para> - This exclude pattern will affect all your projects. It is not versioned, so it - will not affect other users. In contrast you can also use the versioned svn:ignore - property to exclude files or directories from version control. You can set the svn:ignore - property using the + Ausgeschlossene, unversionierte Dateien werden nicht angezeigt + in z.B. dem Übertragen Dialog. Ausserdem werden solche Dateien + beim Importieren in ein Projektarchiv ignoriert. + Schliessen Sie Dateien oder Ordner aus durch Angabe von + Dateinamen oder Erweiterungen. Die einzelnen Muster werden + durch Leerzeichen voneinander getrennt. Zum Beispiel + <literal>bin obj *.bak *.~?? *.jar *.[Tt]mp</literal>. + Die ersten beiden Muster beziehen sich auf Ordner, die + restlichen vier auf Dateien. + </para> + <para> + Diese Auschluss-Muster beziehen sich auf alle Ihre Projekte. + Sie werden nicht versioniert, d.h. andere Benutzer werden davon + nichts mitbekommen. Im Gegensatz dazu können Sie jedoch auch + die versionierte Eigenschaft svn:ignore verwenden, um Dateien + und/oder Ordner von der Versionskontrolle auszuschliessen. + Sie können die svn:ignore Eigenschaft setzen durch den <menuchoice> - <guimenuitem>Add to Ignore List</guimenuitem> + <guimenuitem>Ignorieren</guimenuitem> </menuchoice> - command. After commiting every other user will have the same - svn:ignore property set for this project / directory as you. + Befehl. Nach dem Übertragen wird jeder Benutzer dieselbe + svn:ignore Eigenschaft für das Projekt oder den Ordner + haben wie Sie. </para> </listitem> </varlistentry> +### Translate ### <varlistentry> <term>Default number of log messages</term> @@ -1608,16 +1618,36 @@ </varlistentry> <varlistentry> - <term>Short date / time format in log messages</term> - <listitem> - <para>If the standard long messages use up too much space on your sceen use the short format.</para> + <term>Edit...</term> + <listitem> + <para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para> </listitem> </varlistentry> <varlistentry> - <term>Edit...</term> - <listitem> - <para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para> + <term>Short date / time format in log messages</term> + <listitem> + <para>If the standard long messages use up too much space on your sceen use the short format.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Set filedates to "last commit time"</term> + <listitem> + <para> + This option tells TortoiseSVN to set the filedates to the last commit time + when doing a checkout or an update. Otherwise TortoiseSVN will use + the current date. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Close windows automatically</term> + <listitem> + <para> + TortoiseSVN will automatically close all progress dialogs when the action is finished. + </para> </listitem> </varlistentry> @@ -1629,15 +1659,15 @@ </varlistentry> <varlistentry> - <term>Set filedates to "last commit time"</term> - <listitem> - <para> - This option tells TortoiseSVN to set the filedates to the last commit time - when doing a checkout or an update. Otherwise TortoiseSVN will use - the current date. + <term>Minimum logsize in chars</term> + <listitem> + <para> + The minimum length of a log message for a commit. If you enter + a shorter message than specified here, the commit is disabled. </para> </listitem> </varlistentry> + <varlistentry> <term>Don't remove log messages when cancelling a commit</term> <listitem> @@ -1648,11 +1678,14 @@ </para> </listitem> </varlistentry> + <varlistentry> - <term>Close windows automatically</term> - <listitem> - <para> - TortoiseSVN will automatically close all progress dialogs when the action is finished. + <term>Show BugID/Issue-Nr. Box</term> + <listitem> + <para> + Shows a textbox in the commit dialog where you can enter + a BugID or Issue-Nr. from a bugtracker to associate the + commit with that ID/number. </para> </listitem> </varlistentry> @@ -1673,10 +1706,32 @@ Sie können auch alle überlagerten Icons deaktivieren, aber wo liegt der Spaß darin? </para> <para> + Die <term>Ausschluss Pfade</term> sagen TortoiseSVN für welche + Pfade die überlagerten Icons <emphasis>nicht</emphasis> gezeichnet + werden sollen. Dies ist nützlich wenn Sie zum Beispiel sehr grosse + Arbeitskopien haben, welche grosse externe Bibliotheken, welche Sie + selbst nie ändern werden enthalten. Sie können dann diese Pfade + ausschliessen. Zum Beispiel: + </para> + <para> + <filename>f:\development\SVN\Subversion</filename> deaktiviert + die überlagerten Icons <emphasis>nur</emphasis> für diesen speziellen + Ordner. Sie können die Icons noch immer für alle Dateien und Ordner + innerhalb sehen. + </para> + <para> + <filename>f:\development\SVN\Subversion*</filename> deaktiviert die + überlagerten Icons für <emphasis>alle</emphasis> Dateien und Ordner + welcher Pfad mit <filename>f:\development\SVN\Subversion</filename> + beginnt. Das bedeutet dass auch für alle Dateien und Ordner innerhalb + keine überlagerten Icons angezeigt werden. + </para> + <para> Ausserdem können Sie angeben, welche Befehle im Hauptkontextmenu des Explorer angezeigt werden sollen und welche Sie lieber im Untermenu haben wollen. </para> + </sect2> <sect2 id="tsvn-DUG-settings-network"> <?dbhh topicname="HIDD_SETTINGSPROXY"?> <title>Der Einstellungsdialog, Netzwerkseite</title> Index: trunk/doc/source/en/tsvn_ch04.xml =================================================================== diff --git a/trunk/doc/source/en/tsvn_ch04.xml b/trunk/doc/source/en/tsvn_ch04.xml --- a/trunk/doc/source/en/tsvn_ch04.xml (revision 1487) +++ b/trunk/doc/source/en/tsvn_ch04.xml (revision 1488) @@ -1457,7 +1457,7 @@ <varlistentry> <term>Language</term> <listitem> - <para>Selects your user interface language. What did you expect?</para> + <para>Selects your user interface language. What else did you expect?</para> </listitem> </varlistentry> @@ -1468,6 +1468,9 @@ <indexterm> <primary>exclude pattern</primary> </indexterm> + Exclude patterns are used to prevent unversioned files from + showing up e.g. in the commit dialog. Files matching the + patterns are also ignored by an import. Exclude files or directories by typing in the names or extensions. Patterns are separated by spaces e.g. <literal>bin obj *.bak *.~?? *.jar *.[Tt]mp</literal>. The first two entries refer to directories, the other four to files. @@ -1499,23 +1502,16 @@ </varlistentry> <varlistentry> + <term>Edit...</term> + <listitem> + <para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para> + </listitem> + </varlistentry> + + <varlistentry> <term>Short date / time format in log messages</term> <listitem> <para>If the standard long messages use up too much space on your sceen use the short format.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Edit...</term> - <listitem> - <para>... the subversion configuration file directly. Some settings cannot be modified by TortoiseSVN.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Check for newer versions</term> - <listitem> - <para>If checked, TortoiseSVN will check once a week if an update is available</para> </listitem> </varlistentry> @@ -1529,6 +1525,33 @@ </para> </listitem> </varlistentry> + + <varlistentry> + <term>Close windows automatically</term> + <listitem> + <para> + TortoiseSVN will automatically close all progress dialogs when the action is finished. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Check for newer versions</term> + <listitem> + <para>If checked, TortoiseSVN will check once a week if an update is available</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Minimum logsize in chars</term> + <listitem> + <para> + The minimum length of a log message for a commit. If you enter + a shorter message than specified here, the commit is disabled. + </para> + </listitem> + </varlistentry> + <varlistentry> <term>Don't remove log messages when cancelling a commit</term> <listitem> @@ -1539,11 +1562,14 @@ </para> </listitem> </varlistentry> + <varlistentry> - <term>Close windows automatically</term> - <listitem> - <para> - TortoiseSVN will automatically close all progress dialogs when the action is finished. + <term>Show BugID/Issue-Nr. Box</term> + <listitem> + <para> + Shows a textbox in the commit dialog where you can enter + a BugID or Issue-Nr. from a bugtracker to associate the + commit with that ID/number. </para> </listitem> </varlistentry> @@ -1552,7 +1578,7 @@ </sect2> <sect2 id="tsvn-DUG-settings-overlay"> <?dbhh topicname="HIDD_SETTINGSOVERLAY"?> - <title>The Settings Dialog, Overlay Tab</title> + <title>The Settings Dialog, Look and Feel Tab</title> <para> <figure id="tsvn-DUG-settings-dia-2"> <title>The Settings Dialog, Overlay Tab</title> @@ -1560,8 +1586,27 @@ </figure> This tab allows you to choose, for which items TortoiseSVN shall display icon overlays. If you feel that your icon overlays are very - slow (explore is not responsive), uncheck the "show changed directories" box. + slow (explorer is not responsive), uncheck the "show changed directories" box. You can even disable all icon overlays, but where's the fun in that? + </para> + <para> + The <term>Exclude Paths</term> are used to tell TortoiseSVN for which + paths <emphasis>not</emphasis> to show icon overlays and status columns. + This is useful if you have some very big working copies containing + only libraries which you won't change at all and therefore don't + need the overlays. For example: + </para> + <para> + <filename>f:\development\SVN\Subversion</filename> will disable + the overlays on <emphasis>only</emphasis> that specific folder. You + still can see the overlays on all files and folder inside that folder. + </para> + <para> + <filename>f:\development\SVN\Subversion*</filename> will disable the + overlays on <emphasis>all</emphasis> files and folders which path + starts with <filename>f:\development\SVN\Subversion</filename>. That + means you won't see overlays for all files and folder below that + path. </para> <para> You can also specifiy here which of the TortoiseSVN contex menu Index: trunk/src/Changelog.txt =================================================================== diff --git a/trunk/src/Changelog.txt b/trunk/src/Changelog.txt --- a/trunk/src/Changelog.txt (revision 1487) +++ b/trunk/src/Changelog.txt (revision 1488) @@ -1,3 +1,5 @@ +- ADD: Option to exclude specific paths from showing + icon overlays. (Stefan) - ADD: On Win2k and later, the authentication data is now encrypted before saved. The encryption is not available for the other OS's. (Stefan) Index: trunk/src/Resources/TortoiseProcENG.rc =================================================================== diff --git a/trunk/src/Resources/TortoiseProcENG.rc b/trunk/src/Resources/TortoiseProcENG.rc --- a/trunk/src/Resources/TortoiseProcENG.rc (revision 1487) +++ b/trunk/src/Resources/TortoiseProcENG.rc (revision 1488) @@ -398,27 +398,31 @@ BEGIN CONTROL "&Indicate folders with changed contents", IDC_CHANGEDDIRS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12, - 20,145,10 + 20,206,10 CONTROL "&Removable drives",IDC_REMOVABLE,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,18,66,130,10 + BS_AUTOCHECKBOX | WS_TABSTOP,18,58,130,10 CONTROL "&Network drives",IDC_NETWORK,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,18,76,130,10 + WS_TABSTOP,18,68,130,10 CONTROL "&Fixed drives",IDC_FIXED,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,18,87,127,10 + WS_TABSTOP,18,79,127,10 CONTROL "&CD-ROM",IDC_CDROM,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,159,66,118,10 - GROUPBOX "Drive Types",IDC_DRIVEGROUP,12,52,274,50 + WS_TABSTOP,166,58,118,10 + GROUPBOX "Drive Types",IDC_DRIVEGROUP,12,44,274,50 CONTROL "RAM drives",IDC_RAM,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,159,76,119,10 + WS_TABSTOP,166,68,119,10 CONTROL "Unknown drives",IDC_UNKNOWN,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,159,86,118,10 + WS_TABSTOP,166,78,118,10 CONTROL "Show overlays only in explorer",IDC_ONLYEXPLORER,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,12,33,122,10 - GROUPBOX "Icon Overlays / Status Columns",IDC_STATIC,7,7,286,103 - GROUPBOX "Context Menu",IDC_STATIC,7,113,286,97 + BS_AUTOCHECKBOX | WS_TABSTOP,12,33,190,10 + GROUPBOX "Icon Overlays / Status Columns",IDC_STATIC,7,7,286,118 + GROUPBOX "Context Menu",IDC_STATIC,7,130,286,80 CONTROL "",IDC_MENULIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | - WS_BORDER | WS_TABSTOP,12,125,274,78 + WS_BORDER | WS_TABSTOP,12,140,274,63 + LTEXT "Exclude paths:",IDC_STATIC,12,106,85,8 + EDITTEXT IDC_EXCLUDEPATHS,102,96,184,25,ES_MULTILINE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | + WS_VSCROLL END IDD_SETTINGSPROXY DIALOGEX 0, 0, 300, 217 @@ -860,7 +864,7 @@ RIGHTMARGIN, 293 VERTGUIDE, 12 VERTGUIDE, 18 - VERTGUIDE, 159 + VERTGUIDE, 166 VERTGUIDE, 286 TOPMARGIN, 7 BOTTOMMARGIN, 210 @@ -1377,6 +1381,8 @@ "If activated, prevents the overlays from showing in ""save as.."" or ""open"" dialogs" IDS_SETTINGS_MENULAYOUT_TT "Check those menu entries you want to appear in the top context menu instead of the submenu" + IDS_SETTINGS_EXCLUDELIST_TT + "A newline separated list of paths for which no icon overlays are shown.\nIf you add an ""*"" char at the end of a path, then all files and subdirs inside that path are excluded too.\nAn empty list will allow overlays on all paths." END STRINGTABLE Index: trunk/src/TortoiseProc/SetOverlayPage.cpp =================================================================== diff --git a/trunk/src/TortoiseProc/SetOverlayPage.cpp b/trunk/src/TortoiseProc/SetOverlayPage.cpp --- a/trunk/src/TortoiseProc/SetOverlayPage.cpp (revision 1487) +++ b/trunk/src/TortoiseProc/SetOverlayPage.cpp (revision 1488) @@ -20,6 +20,7 @@ #include "TortoiseProc.h" #include "SetOverlayPage.h" #include "Globals.h" +#include ".\setoverlaypage.h" // CSetOverlayPage dialog @@ -35,6 +36,7 @@ , m_bRAM(FALSE) , m_bUnknown(FALSE) , m_bOnlyExplorer(FALSE) + , m_sExcludePaths(_T("")) { m_regShowChangedDirs = CRegDWORD(_T("Software\\TortoiseSVN\\RecursiveOverlay")); m_regOnlyExplorer = CRegDWORD(_T("Software\\TortoiseSVN\\OverlaysOnlyInExplorer"), FALSE); @@ -45,6 +47,7 @@ m_regDriveMaskRAM = CRegDWORD(_T("Software\\TortoiseSVN\\DriveMaskRAM")); m_regDriveMaskUnknown = CRegDWORD(_T("Software\\TortoiseSVN\\DriveMaskUnknown")); m_regTopmenu = CRegDWORD(_T("Software\\TortoiseSVN\\ContextMenuEntries"), MENUCHECKOUT | MENUUPDATE | MENUCOMMIT); + m_regExcludePaths = CRegString(_T("Software\\TortoiseSVN\\OverlayExcludeList")); m_bShowChangedDirs = m_regShowChangedDirs; m_bOnlyExplorer = m_regOnlyExplorer; @@ -55,6 +58,8 @@ m_bRAM = m_regDriveMaskRAM; m_bUnknown = m_regDriveMaskUnknown; m_topmenu = m_regTopmenu; + m_sExcludePaths = m_regExcludePaths; + m_sExcludePaths.Replace(_T("\n"), _T("\r\n")); } CSetOverlayPage::~CSetOverlayPage() @@ -74,6 +79,7 @@ DDX_Control(pDX, IDC_DRIVEGROUP, m_cDriveGroup); DDX_Check(pDX, IDC_ONLYEXPLORER, m_bOnlyExplorer); DDX_Control(pDX, IDC_MENULIST, m_cMenuList); + DDX_Text(pDX, IDC_EXCLUDEPATHS, m_sExcludePaths); } @@ -87,6 +93,7 @@ ON_BN_CLICKED(IDC_RAM, OnBnClickedRam) ON_BN_CLICKED(IDC_ONLYEXPLORER, OnBnClickedOnlyexplorer) ON_NOTIFY(LVN_ITEMCHANGED, IDC_MENULIST, OnLvnItemchangedMenulist) + ON_EN_CHANGE(IDC_EXCLUDEPATHS, OnEnChangeExcludepaths) END_MESSAGE_MAP() @@ -103,6 +110,9 @@ m_regDriveMaskRAM = m_bRAM; m_regDriveMaskUnknown = m_bUnknown; m_regTopmenu = m_topmenu; + m_sExcludePaths.Replace(_T("\r"), _T("")); + m_regExcludePaths = m_sExcludePaths; + m_sExcludePaths.Replace(_T("\n"), _T("\r\n")); } } @@ -116,7 +126,7 @@ m_tooltips.AddTool(IDC_CHANGEDDIRS, IDS_SETTINGS_CHANGEDDIRS_TT); m_tooltips.AddTool(IDC_ONLYEXPLORER, IDS_SETTINGS_ONLYEXPLORER_TT); m_tooltips.AddTool(IDC_MENULIST, IDS_SETTINGS_MENULAYOUT_TT); - + m_tooltips.AddTool(IDC_EXCLUDEPATHS, IDS_SETTINGS_EXCLUDELIST_TT); m_cMenuList.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER); @@ -280,3 +290,8 @@ } // if (m_cMenuList.GetItemCount() > 0) *pResult = 0; } + +void CSetOverlayPage::OnEnChangeExcludepaths() +{ + SetModified(); +} Index: trunk/src/TortoiseProc/SetOverlayPage.h =================================================================== diff --git a/trunk/src/TortoiseProc/SetOverlayPage.h b/trunk/src/TortoiseProc/SetOverlayPage.h --- a/trunk/src/TortoiseProc/SetOverlayPage.h (revision 1487) +++ b/trunk/src/TortoiseProc/SetOverlayPage.h (revision 1488) @@ -92,6 +92,8 @@ CIconStatic m_cDriveGroup; BOOL m_bInitialized; CRegDWORD m_regTopmenu; + CRegString m_regExcludePaths; + CString m_sExcludePaths; CImageList m_imgList; CListCtrl m_cMenuList; @@ -110,4 +112,5 @@ virtual BOOL OnApply(); afx_msg void OnBnClickedOnlyexplorer(); afx_msg void OnLvnItemchangedMenulist(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnEnChangeExcludepaths(); }; Index: trunk/src/TortoiseProc/resource.h =================================================================== diff --git a/trunk/src/TortoiseProc/resource.h b/trunk/src/TortoiseProc/resource.h --- a/trunk/src/TortoiseProc/resource.h (revision 1487) +++ b/trunk/src/TortoiseProc/resource.h (revision 1488) @@ -179,6 +179,7 @@ #define IDC_MINLOGSIZE 1077 #define IDC_BUGID 1077 #define IDC_WCURL 1077 +#define IDC_EXCLUDEPATHS 1077 #define IDC_DRIVEGROUP 1079 #define IDC_PROXYGROUP 1080 #define IDC_SSHGROUP 1081 @@ -427,6 +428,7 @@ #define IDS_SETTINGS_CHECKNEWER_TT 3100 #define IDS_SETTINGS_ONLYEXPLORER_TT 3101 #define IDS_SETTINGS_MENULAYOUT_TT 3102 +#define IDS_SETTINGS_EXCLUDELIST_TT 3103 #define IDS_CHECKNEWER_YOURVERSION 3200 #define IDS_CHECKNEWER_CURRENTVERSION 3201 #define IDS_CHECKNEWER_YOURUPTODATE 3202 Index: trunk/src/TortoiseShell/ShellCache.h =================================================================== diff --git a/trunk/src/TortoiseShell/ShellCache.h b/trunk/src/TortoiseShell/ShellCache.h --- a/trunk/src/TortoiseShell/ShellCache.h (revision 1487) +++ b/trunk/src/TortoiseShell/ShellCache.h (revision 1488) @@ -21,9 +21,11 @@ #include "globals.h" #include <tchar.h> #include <string> +#include <vector> #include "registry.h" #define REGISTRYTIMEOUT 2000 +#define EXCLUDELISTTIMEOUT 5000 #define DRIVETYPETIMEOUT 300000 // 5 min #define NUMBERFMTTIMEOUT 300000 class ShellCache @@ -39,12 +41,14 @@ driveremove = CRegStdWORD(_T("Software\\TortoiseSVN\\DriveMaskRemovable")); driveram = CRegStdWORD(_T("Software\\TortoiseSVN\\DriveMaskRAM")); driveunknown = CRegStdWORD(_T("Software\\TortoiseSVN\\DriveMaskUnknown")); + excludelist = CRegStdString(_T("Software\\TortoiseSVN\\OverlayExcludeList")); recursiveticker = GetTickCount(); folderoverlayticker = GetTickCount(); driveticker = recursiveticker; drivetypeticker = recursiveticker; langticker = recursiveticker; - columnrevformatticker = langticker; + columnrevformatticker = recursiveticker; + excludelistticker = recursiveticker; menulayout = CRegStdWORD(_T("Software\\TortoiseSVN\\ContextMenuEntries"), MENUCHECKOUT | MENUUPDATE | MENUCOMMIT); langid = CRegStdWORD(_T("Software\\TortoiseSVN\\LanguageID"), 1033); blockstatus = CRegStdWORD(_T("Software\\TortoiseSVN\\BlockStatus"), 0); @@ -177,6 +181,21 @@ return FALSE; if ((drivetype == DRIVE_UNKNOWN)&&(IsUnknown())) return FALSE; + + ExcludeListValid(); + for (std::vector<stdstring>::iterator I = exvector.begin(); I != exvector.end(); ++I) + { + if (I->empty()) + continue; + if (I->at(I->size()-1)=='*') + { + stdstring str = I->substr(0, I->size()-1); + if (_tcsnicmp(str.c_str(), path, str.size())==0) + return FALSE; + } + else if (_tcsicmp(I->c_str(), path)==0) + return FALSE; + } return TRUE; } DWORD GetLangID() @@ -218,6 +237,32 @@ driveremove.read(); } } + void ExcludeListValid() + { + if ((GetTickCount() - EXCLUDELISTTIMEOUT)>excludelistticker) + { + excludelistticker = GetTickCount(); + excludelist.read(); + if (excludeliststr.compare((stdstring)excludelist)==0) + return; + excludeliststr = (stdstring)excludelist; + exvector.clear(); + int pos = 0, pos_ant = 0; + pos = excludeliststr.find(_T("\n"), pos_ant); + while (pos != stdstring::npos) + { + stdstring token = excludeliststr.substr(pos_ant, pos-pos_ant); + exvector.push_back(token); + pos_ant = pos+1; + pos = excludeliststr.find(_T("\n"), pos_ant); + } + if (!excludeliststr.empty()) + { + exvector.push_back(excludeliststr.substr(pos_ant, excludeliststr.size()-1)); + } + excludeliststr = (stdstring)excludelist; + } + } CRegStdWORD blockstatus; CRegStdWORD langid; CRegStdWORD showrecursive; @@ -229,6 +274,9 @@ CRegStdWORD driveram; CRegStdWORD driveunknown; CRegStdWORD menulayout; + CRegStdString excludelist; + stdstring excludeliststr; + std::vector<stdstring> exvector; DWORD recursiveticker; DWORD folderoverlayticker; DWORD driveticker; @@ -237,6 +285,7 @@ DWORD langticker; DWORD blockstatusticker; DWORD columnrevformatticker; + DWORD excludelistticker; UINT drivetypecache[27]; TCHAR drivetypepathcache[MAX_PATH]; NUMBERFMT columnrevformat;