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