Prefer to use VS2013 for compiling and testing on AppVeyor
[TortoiseGit.git] / src / Utils / TaskbarUUID.h
blob03382e0dbf4f5b972903f3c5ea81ba49c299ba79
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2013 - TortoiseGit
4 // Copyright (C) 2011 - TortoiseSVN
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software Foundation,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #pragma once
21 #include <string>
24 /**
25 * Sets the Task ID (Win7) for the process according to settings
26 * in the registry:
27 * HKCU\\Software\\TortoiseGit\\GroupTaskbarIconsPerRepo
28 * determines how this is done. The Task ID is used by the windows
29 * taskbar to determine how the app icons on the taskbar are grouped
30 * together.
32 * GroupTaskbarIconsPerRepo = 0 : Icons are grouped by application.
33 * GroupTaskbarIconsPerRepo = 1 : same as 0, one icon per application (regardless of working tree)
34 * GroupTaskbarIconsPerRepo = 2 : All TGit icons are grouped to one icon (regardless of working tree)
35 * GroupTaskbarIconsPerRepo = 3 : Icons are grouped by working tree path, so
36 * each TGit dialog gets grouped according
37 * to the working tree it is used for.
38 * Each TGit app is grouped separately, i.e.,
39 * TortoiseGitMerge icons won't get grouped together
40 * with TortoiseGitProc icons.
41 * GroupTaskbarIconsPerRepo = 4 : The same as 1, but all TGit apps are treated
42 * as one, e.g., a TortoiseGitMerge instance showing
43 * a diff from repo X is grouped together with
44 * a log dialog instance for repo X.
46 * The repository uuid is used by examining the command line of the process:
47 * it must be set with /groupuuid:"uuid".
49 void SetTaskIDPerUUID();
51 /**
52 * Returns the App ID string. See \ref SetTaskIDPerUUID() for details.
54 std::wstring GetTaskIDPerUUID(LPCTSTR uuid = NULL);
56 /**
57 * Sets a different overlay icon for the taskbar icon on Win7 for each
58 * repository uuid. This allows to 'mark' the uuid-grouped icons on the
59 * taskbar to make them more distinguishable.
60 * Call this function from the OnTaskbarButtonCreated() message handler.
61 * To receive this message, you must first register it:
62 * \code
63 * const UINT TaskBarButtonCreated = RegisterWindowMessage(L"TaskbarButtonCreated");
64 * \endcode
66 * The repository uuid is used by examining the command line of the process:
67 * it must be set with /groupuuid:"uuid".
69 void SetUUIDOverlayIcon(HWND hWnd);