OSDN Git Service

Add "F5" refresh remote and branch info at push dialog
[tortoisegit/TortoiseGitJp.git] / src / Utils / MiscUI / HistoryCombo.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - TortoioseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #pragma once\r
20 \r
21 /**\r
22  * \ingroup Utils\r
23  * Extends the CComboBoxEx class with a history of entered\r
24  * values. An example of such a combobox is the Start/Run\r
25  * dialog which lists the programs you used last in a combobox.\r
26  * To use this class do the following:\r
27  * -# add both files HistoryCombo.h and HistoryCombo.cpp to your project.\r
28  * -# add a ComboBoxEx to your dialog\r
29  * -# create a variable for the ComboBox of type control\r
30  * -# change the type of the created variable from CComboBoxEx to\r
31  *    CHistoryCombo\r
32  * -# in your OnInitDialog() call SetURLHistory(TRUE) if your ComboBox\r
33  *    contains URLs\r
34  * -# in your OnInitDialog() call the LoadHistory() method\r
35  * -# in your OnOK() or somewhere similar call the SaveHistory() method\r
36  * \r
37  * thats it. \r
38  */\r
39 #include "git.h"\r
40 class CHistoryCombo : public CComboBoxEx\r
41 {\r
42 // Construction\r
43 public:\r
44         CHistoryCombo(BOOL bAllowSortStyle = FALSE);\r
45         virtual ~CHistoryCombo();\r
46 \r
47 // Operations\r
48 public:\r
49         /**\r
50          * Adds the string \a str to both the combobox and the history.\r
51          * If \a pos is specified, insert the string at the specified\r
52          * position, otherwise add it to the end of the list.\r
53          */\r
54         int AddString(CString str, INT_PTR pos = -1);\r
55         void DisableTooltip(){m_bDyn = FALSE;} //because rebase need disable combox tooltip to show version info\r
56 protected:\r
57         DECLARE_MESSAGE_MAP()\r
58         virtual BOOL PreCreateWindow(CREATESTRUCT& cs);\r
59         virtual BOOL PreTranslateMessage(MSG* pMsg);\r
60         virtual void PreSubclassWindow();\r
61 \r
62         afx_msg void OnMouseMove(UINT nFlags, CPoint point);\r
63         afx_msg void OnTimer(UINT_PTR nIDEvent);\r
64         afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);\r
65 \r
66         void CreateToolTip();\r
67 \r
68 // Implementation\r
69 public:\r
70         /**\r
71          * Clears the history in the registry/inifile and the ComboBox.\r
72          * \param bDeleteRegistryEntries if this value is true then the registry key\r
73          * itself is deleted.\r
74          */\r
75         void ClearHistory(BOOL bDeleteRegistryEntries = TRUE);\r
76 \r
77         void Reset(){   ResetContent(); m_arEntries.RemoveAll(); };\r
78         /**\r
79          * When \a bURLHistory is TRUE, treat the combo box entries\r
80          * as URLs. This activates Shell URL auto completion and\r
81          * the display of special icons in front of the combobox\r
82          * entries. Default is FALSE.\r
83          */\r
84         void SetURLHistory(BOOL bURLHistory);\r
85         /**\r
86          * When \a bPathHistory is TRUE, treat the combo box entries\r
87          * as Paths. This activates Shell Path auto completion and\r
88          * the display of special icons in front of the combobox\r
89          * entries. Default is FALSE.\r
90          */\r
91         void SetPathHistory(BOOL bPathHistory);\r
92         /**\r
93          * Sets the maximum numbers of entries in the history list.\r
94          * If the history is larger as \em nMaxItems then the last\r
95          * items in the history are deleted.\r
96          */\r
97         void SetMaxHistoryItems(int nMaxItems);\r
98         /**\r
99          * Saves the history to the registry/inifile.\r
100          * \remark if you haven't called LoadHistory() before this method\r
101          * does nothing!\r
102          */\r
103         void SaveHistory();\r
104         /**\r
105          * Loads the history from the registry/inifile and fills in the\r
106          * ComboBox.\r
107          * \param lpszSection a section name where to put the entries, e.g. "lastloadedfiles"\r
108          * \param lpszKeyPrefix a prefix to use for the history entries in registry/inifiles. E.g. "file" or "entry"\r
109          */\r
110         CString LoadHistory(LPCTSTR lpszSection, LPCTSTR lpszKeyPrefix);\r
111 \r
112         /**\r
113          * Returns the string in the combobox which is either selected or the user has entered.\r
114          */\r
115         CString GetString() const;\r
116 \r
117         void AddString(STRING_VECTOR &list);\r
118 \r
119 protected:\r
120         /**\r
121          * Will be called whenever the return key is pressed while the\r
122          * history combo has the input focus. A derived class may implement\r
123          * a special behavior for the return key by overriding this method.\r
124          * It must return true to prevent the default processing for the\r
125          * return key. The default implementation returns false.\r
126          */\r
127         virtual bool OnReturnKeyPressed() { return false; }\r
128 \r
129         /**\r
130          * Removes the selected item from the combo box and updates\r
131          * the registry settings. Returns TRUE if successful.\r
132          */\r
133         BOOL RemoveSelectedItem();\r
134 \r
135 protected:\r
136         CStringArray    m_arEntries;\r
137         CString                 m_sSection;\r
138         CString                 m_sKeyPrefix;\r
139         int                             m_nMaxHistoryItems;\r
140         BOOL                    m_bAllowSortStyle;\r
141         BOOL                    m_bURLHistory;\r
142         BOOL                    m_bPathHistory;\r
143         HWND                    m_hWndToolTip;\r
144         TOOLINFO                m_ToolInfo;\r
145         BOOL                    m_ttShown;\r
146         BOOL                    m_bDyn;\r
147 };\r
148 \r
149 \r
150 \r