]> git.saurik.com Git - wxWidgets.git/blob - utils/configtool/src/utils.h
Clipboard usage fixes inspired by Tinderbox logs.
[wxWidgets.git] / utils / configtool / src / utils.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: utils.h
3 // Purpose: Utility functions and classes
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 2002-09-04
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence:
10 /////////////////////////////////////////////////////////////////////////////
11
12 /*!
13 * \file
14 * \brief A file of utility functions and classes.
15 */
16
17 #ifdef __GNUG__
18 // #pragma interface
19 #endif
20
21 #ifndef _AP_UTILS_H_
22 #define _AP_UTILS_H_
23
24 #include "wx/imaglist.h"
25
26 #ifndef DOXYGEN_SKIP
27
28 /*!
29 * \defgroup ForwardDeclarations Forward Declations
30 */
31
32 /*@{*/
33
34 class WXDLLEXPORT wxImage;
35 class WXDLLEXPORT wxNotebook;
36 class WXDLLEXPORT wxInputStream;
37 class WXDLLEXPORT wxOutputStream;
38 class WXDLLEXPORT wxFileInputStream;
39 class WXDLLEXPORT wxFileOutputStream;
40 class WXDLLEXPORT wxDataInputStream;
41 class WXDLLEXPORT wxDataOutputStream;
42 class WXDLLEXPORT wxSplitterWindow;
43 class WXDLLEXPORT wxVariant;
44 class WXDLLEXPORT wxListCtrl;
45
46 /* \endif
47 */
48
49 /*@}*/
50
51 #endif
52
53 #ifdef __WXMSW__
54 #define wxNEWLINE wxT("\r\n")
55 #else
56 #define wxNEWLINE wxT("\n")
57 #endif
58
59 /// Returns the image type, or -1, determined from the extension.
60 int apDetermineImageType(const wxString& filename);
61
62 /// Convert a colour to a 6-digit hex string
63 wxString apColourToHexString(const wxColour& col);
64
65 /// Convert 6-digit hex string to a colour
66 wxColour apHexStringToColour(const wxString& hex);
67
68 /// Convert a wxFont to a string
69 wxString apFontToString(const wxFont& font);
70
71 /// Convert a string to a wxFont
72 wxFont apStringToFont(const wxString& str);
73
74 /// Get the index of the given named wxNotebook page
75 int apFindNotebookPage(wxNotebook* notebook, const wxString& name);
76
77 /// View the given URL
78 void apViewHTMLFile(const wxString& url);
79
80 /// Returns the system temporary directory.
81 wxString wxGetTempDir();
82
83 /// Launch the application associated with the filename's extension
84 bool apInvokeAppForFile(const wxString& filename);
85
86 /// \brief Find the absolute path where this application has been run from.
87 ///
88 /// \param argv0 wxTheApp->argv[0]
89 /// \param cwd The current working directory (at startup)
90 /// \param appVariableName The name of a variable containing the directory for this app, e.g.
91 /// MYAPPDIR. This is used as a last resort.
92 wxString apFindAppPath(const wxString& argv0, const wxString& cwd, const wxString& appVariableName = wxEmptyString);
93
94 /// Adds a context-sensitive help button, for non-Windows platforms
95 void apAddContextHelpButton(wxWindow* parent, wxSizer* sizer, int sizerFlags = wxALIGN_CENTRE|wxALL, int sizerBorder = 5);
96
97 /// Get selected wxNotebook page
98 wxWindow* apNotebookGetSelectedPage(wxNotebook* notebook);
99
100 #define wxMAX_ICON_STATES 4
101
102 /*
103
104 wxIconInfo, wxIconTable
105 associate multiple state icons with items in tree controls
106 (and potentially other controls).
107
108 So instead of having to remember a lot of image list ids,
109 you have a named state info object which contains up to 4 different states
110 (identified by the integers 0 - 3). Each of these states can
111 be in a further 2 sub-states - enabled or disabled.
112
113 wxIconTable holds a list of these state info objects
114 and has a convenient API. For example, the following adds
115 icons for a checkbox item that can be: on/enabled, off/enabled,
116 on/disabled,off/disabled.
117
118 m_iconTable.AddInfo("Checkbox", wxICON(checked), 0, true);
119 m_iconTable.AddInfo("Checkbox", wxICON(checked_dis), 0, false);
120 m_iconTable.AddInfo("Checkbox", wxICON(unchecked), 1, true);
121 m_iconTable.AddInfo("Checkbox", wxICON(unchecked_dis), 1, false);
122
123 When you update the item image in response to (e.g.) user interaction,
124 you can say something like this:
125
126 int iconId = m_iconTable.GetIconId("Checkbox", 0, false);
127
128 treeCtrl.SetItemImage(itemId, iconId, wxTreeItemIcon_Normal);
129 treeCtrl.SetItemImage(itemId, iconId, wxTreeItemIcon_Selected);
130
131 */
132
133 /*
134 * wxIconInfo
135 * Stores information about the visual state of an item in a tree control
136 */
137
138 class wxIconInfo: public wxObject
139 {
140 public:
141 wxIconInfo(const wxString& name);
142
143 // How many states? (Each state
144 // has enabled/disabled state)
145 // Max (say) 4 states, each with
146 // enabled/disabled
147 int GetStateCount() const { return m_maxStates; };
148
149 void SetStateCount(int count) { m_maxStates = count; }
150 int GetIconId(int state, bool enabled = true) const;
151 void SetIconId(int state, bool enabled, int iconId);
152
153 const wxString& GetName() const { return m_name; }
154
155 protected:
156 int m_maxStates;
157 int m_states[wxMAX_ICON_STATES * 2]; // Enabled/disabled
158 wxString m_name; // Name of icon, e.g. "Package"
159 };
160
161 /*!
162 * wxIconTable
163 * Contains a list of wxIconInfos
164 */
165
166 class wxIconTable: public wxList
167 {
168 public:
169 wxIconTable(wxImageList* imageList = NULL);
170
171 void AppendInfo(wxIconInfo* info);
172
173 // Easy way of initialising both the image list and the
174 // info db. It will generate image ids itself while appending the icon.
175 // 'state' is an integer from 0 up to the max allowed, representing a different
176 // state. There may be only one, or (for a checkbox) there may be two.
177 // A folder that can be open or closed would have two states.
178 // Enabled/disabled is taken as a special case.
179 bool AddInfo(const wxString& name, const wxIcon& icon, int state, bool enabled);
180
181 wxIconInfo* FindInfo(const wxString& name) const;
182
183 int GetIconId(const wxString& name, int state, bool enabled = true) const;
184 bool SetIconId(const wxString& name, int state, bool enabled, int iconId) ;
185
186 void SetImageList(wxImageList* imageList) { m_imageList = imageList; }
187 wxImageList* GetImageList() const { return m_imageList; }
188
189 protected:
190 wxImageList* m_imageList;
191 };
192
193 /// Useful insertion operators for wxOutputStream.
194 wxOutputStream& operator <<(wxOutputStream&, const wxString& s);
195 wxOutputStream& operator <<(wxOutputStream&, const char c);
196 wxOutputStream& operator <<(wxOutputStream&, long l);
197
198 // Convert characters to HTML equivalents
199 wxString ctEscapeHTMLCharacters(const wxString& str);
200
201 // Match 'matchText' against 'matchAgainst', optionally constraining to
202 // whole-word only.
203 bool ctMatchString(const wxString& matchAgainst, const wxString& matchText, bool wholeWordOnly);
204
205
206 #endif
207 // _AP_UTILS_H_