]> git.saurik.com Git - wxWidgets.git/blob - utils/configtool/src/appsettings.cpp
Added wx.lib.hyperlink from Andrea Gavana. It is a control like
[wxWidgets.git] / utils / configtool / src / appsettings.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: appsettings.cpp
3 // Purpose: Implements settings-related functionality
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 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13 #pragma implementation "appsettings.h"
14 #endif
15
16 // For compilers that support precompilation, includes "wx/wx.h".
17 #include "wx/wxprec.h"
18
19 #ifdef __BORLANDC__
20 #pragma hdrstop
21 #endif
22
23 #ifndef WX_PRECOMP
24
25 #include "wx/datstrm.h"
26 #include "wx/dir.h"
27 #include "wx/colordlg.h"
28 #include "wx/wxhtml.h"
29 #include "wx/effects.h"
30 #include "wx/spinctrl.h"
31 #include "wx/tooltip.h"
32 #include "wx/settings.h"
33
34 #endif
35
36 #include "wx/wfstream.h"
37 #include "wx/config.h"
38 #include "wx/fileconf.h"
39 #include "wx/valgen.h"
40 #include "utils.h"
41 #include "wxconfigtool.h"
42 #include "appsettings.h"
43 #include "mainframe.h"
44 #include "symbols.h"
45 #include "settingsdialog.h"
46
47 /*
48 * User-changeable settings
49 */
50
51 IMPLEMENT_DYNAMIC_CLASS(ctSettings, wxObject)
52
53 ctSettings::ctSettings()
54 {
55 m_noUses = 0;
56 m_showToolBar = true;
57 m_showWelcomeDialog = true;
58 m_exportDir = wxEmptyString;
59
60 m_frameSize = wxRect(10, 10, 600, 500);
61 // m_backgroundColour = wxColour(140, 172, 179); // blue-grey
62 m_editWindowFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
63
64 m_appName = wxT("wxWidgets Configuration Tool");
65 m_appNameShort = wxT("Configuration Tool");
66 m_showSplashScreen = false;
67 m_userName = wxEmptyString;
68 m_frameStatus = ctSHOW_STATUS_NORMAL;
69 m_loadLastDocument = true;
70 m_firstTimeRun = true;
71 m_smallToolbar = true;
72 m_mainSashSize = 200;
73 m_useToolTips = true;
74 m_showTrayIcon = true;
75 m_trayIconIsShown = false;
76 m_useEnvironmentVariable = true;
77 m_frameworkDir = wxEmptyString;
78 m_matchWholeWord = false;
79 m_matchCase = false;
80 m_defaultFileKind = wxT("Setup file");
81 }
82
83 // Copy constructor
84 ctSettings::ctSettings(const ctSettings& settings) : wxObject()
85 {
86 Copy(settings);
87 }
88
89
90 void ctSettings::operator = (const ctSettings& settings)
91 {
92 Copy(settings);
93 }
94
95 void ctSettings::Copy (const ctSettings& settings)
96 {
97 m_lastSetupSaveDir = settings.m_lastSetupSaveDir;
98 m_lastDocument = settings.m_lastDocument;
99 m_showToolBar = settings.m_showToolBar;
100 m_frameSize = settings.m_frameSize;
101 m_editWindowFont = settings.m_editWindowFont;
102 m_showSplashScreen = settings.m_showSplashScreen;
103 m_userName = settings.m_userName;
104 m_loadLastDocument = settings.m_loadLastDocument;
105 m_exportDir = settings.m_exportDir;
106 m_firstTimeRun = settings.m_firstTimeRun;
107 m_noUses = settings.m_noUses;
108 m_smallToolbar = settings.m_smallToolbar;
109 m_useToolTips = settings.m_useToolTips;
110 m_showWelcomeDialog = settings.m_showWelcomeDialog;
111 m_mainSashSize = settings.m_mainSashSize;
112
113 m_showTrayIcon = settings.m_showTrayIcon;
114 m_trayIconIsShown = settings.m_trayIconIsShown;
115
116 m_useEnvironmentVariable = settings.m_useEnvironmentVariable;
117 m_frameworkDir = settings.m_frameworkDir;
118 m_matchWholeWord = settings.m_matchWholeWord;
119 m_matchCase = settings.m_matchCase;
120 m_defaultFileKind = settings.m_defaultFileKind ;
121 }
122
123 // Do some initialisation within stApp::OnInit
124 bool ctSettings::Init()
125 {
126 m_lastSetupSaveDir = wxEmptyString;
127 if (m_userName.empty())
128 m_userName = wxGetUserName();
129
130 return true;
131 }
132
133 // Create new filename
134 wxString ctSettings::GenerateFilename(const wxString& rootName)
135 {
136 wxString path;
137 if (!m_lastFilename.empty())
138 path = wxPathOnly(m_lastFilename);
139 else
140 path = wxGetApp().GetAppDir();
141
142 wxString filename(path);
143 if (filename.Last() != wxFILE_SEP_PATH )
144 filename += wxFILE_SEP_PATH;
145 filename += rootName;
146
147 wxString fullFilename = filename + wxT(".wxs");
148 int i = 0;
149 wxString postfixStr;
150 while (wxFileExists(fullFilename))
151 {
152 i ++;
153 postfixStr.Printf(_T("%d"), i);
154 fullFilename = filename + postfixStr + wxT(".wxs");
155 }
156
157 m_lastFilename = fullFilename;
158 return fullFilename;
159 }
160
161 // Load config info
162 bool ctSettings::LoadConfig()
163 {
164 wxConfig config(wxGetApp().GetSettings().GetAppName(), wxT("wxWidgets"));
165
166 config.Read(wxT("Files/LastFile"), & m_lastFilename);
167 config.Read(wxT("Files/LastSetupSaveDir"), & m_lastSetupSaveDir);
168 config.Read(wxT("Files/ExportDir"), & m_exportDir);
169 config.Read(wxT("Files/FrameworkDir"), & m_frameworkDir);
170 config.Read(wxT("Files/UseEnvironmentVariable"), (bool*) & m_useEnvironmentVariable);
171
172 config.Read(wxT("Misc/UserName"), & m_userName);
173 config.Read(wxT("Misc/FrameStatus"), & m_frameStatus);
174 config.Read(wxT("Misc/ShowToolTips"), (bool*) & m_useToolTips);
175 config.Read(wxT("Misc/LastDocument"), & m_lastDocument);
176 config.Read(wxT("Misc/LoadLastDocument"), (bool*) & m_loadLastDocument);
177 config.Read(wxT("Misc/ShowWelcomeDialog"), (bool*) & m_showWelcomeDialog);
178 config.Read(wxT("Misc/Ran"), & m_noUses);
179 config.Read(wxT("Misc/ShowTrayIcon"), (bool*) & m_showTrayIcon);
180 config.Read(wxT("Misc/MatchWholeWord"), (bool*) & m_matchWholeWord);
181 config.Read(wxT("Misc/MatchCase"), (bool*) & m_matchCase);
182 config.Read(wxT("Misc/BuildMode"), & m_defaultFileKind );
183
184 m_noUses ++;
185
186 config.Read(wxT("Windows/ShowToolBar"), (bool*) & m_showToolBar);
187
188 m_firstTimeRun = !(config.Read(wxT("Windows/WindowX"), & m_frameSize.x));
189 config.Read(wxT("Windows/WindowY"), & m_frameSize.y);
190 config.Read(wxT("Windows/WindowWidth"), & m_frameSize.width);
191 config.Read(wxT("Windows/WindowHeight"), & m_frameSize.height);
192 config.Read(wxT("Windows/ShowSplashScreen"), (bool*) & m_showSplashScreen);
193 config.Read(wxT("Windows/SmallToolbar"), (bool*) & m_smallToolbar);
194 config.Read(wxT("Windows/MainSashSize"), & m_mainSashSize);
195
196 wxString fontSpec;
197
198 fontSpec = wxEmptyString;
199 config.Read(wxT("Style/EditWindowFont"), & fontSpec);
200 if (!fontSpec.empty())
201 m_editWindowFont = apStringToFont(fontSpec);
202
203 // Crash-resistance
204 int runningProgram = 0;
205 config.Read(wxT("Misc/RunningProgram"), & runningProgram);
206
207 #ifndef __WXDEBUG__
208 // runningProgram should be zero if all is well. If 1,
209 // it crashed during a run, so we should disable the auto-load
210 // facility just in case it's trying to load a damaged file.
211 if (runningProgram != 0)
212 {
213 m_loadLastDocument = false;
214 }
215 #endif
216
217 config.Write(wxT("Misc/RunningProgram"), (long) 1);
218
219 return true;
220 }
221
222 // Save config info
223 bool ctSettings::SaveConfig()
224 {
225 wxConfig config(wxGetApp().GetSettings().GetAppName(), wxT("wxWidgets"));
226
227 config.Write(wxT("Files/LastFile"), m_lastFilename);
228 config.Write(wxT("Files/LastSetupSaveDir"), m_lastSetupSaveDir);
229 config.Write(wxT("Files/ExportDir"), m_exportDir);
230 config.Write(wxT("Files/FrameworkDir"), m_frameworkDir);
231 config.Write(wxT("Files/UseEnvironmentVariable"), m_useEnvironmentVariable);
232
233 config.Write(wxT("Misc/UserName"), m_userName);
234 config.Write(wxT("Misc/FrameStatus"), (long) m_frameStatus);
235 config.Write(wxT("Misc/ShowToolTips"), m_useToolTips);
236 config.Write(wxT("Misc/LastDocument"), m_lastDocument);
237 config.Write(wxT("Misc/LoadLastDocument"), (long) m_loadLastDocument);
238 config.Write(wxT("Misc/ShowWelcomeDialog"), (long) m_showWelcomeDialog);
239 config.Write(wxT("Misc/Ran"), m_noUses);
240 config.Write(wxT("Misc/ShowTrayIcon"), (long) m_showTrayIcon);
241 config.Write(wxT("Misc/MatchWholeWord"), (long) m_matchWholeWord);
242 config.Write(wxT("Misc/MatchCase"), (long) m_matchCase);
243 config.Write(wxT("Misc/BuildMode"), m_defaultFileKind);
244
245 config.Write(wxT("Windows/ShowToolBar"), m_showToolBar);
246 config.Write(wxT("Windows/WindowX"), (long) m_frameSize.x);
247 config.Write(wxT("Windows/WindowY"), (long) m_frameSize.y);
248 config.Write(wxT("Windows/WindowWidth"), (long) m_frameSize.width);
249 config.Write(wxT("Windows/WindowHeight"), (long) m_frameSize.height);
250
251 config.Write(wxT("Windows/ShowSplashScreen"), m_showSplashScreen);
252 config.Write(wxT("Windows/SmallToolbar"), (long) m_smallToolbar);
253 config.Write(wxT("Windows/MainSashSize"), (long) m_mainSashSize);
254
255 /*
256 wxString backgroundColour(apColourToHexString(m_backgroundColour));
257 config.Write(wxT("Style/BackgroundColour"), backgroundColour);
258 */
259
260 config.Write(wxT("Style/EditWindowFont"), apFontToString(m_editWindowFont));
261
262 // Indicate that we're no longer running, so we know if the program
263 // crashed last time around.
264 config.Write(wxT("Misc/RunningProgram"), (long) 0);
265
266 {
267 config.SetPath(wxT("FileHistory/"));
268 wxGetApp().GetDocManager()->FileHistorySave(config);
269 }
270
271 return true;
272 }
273
274 void ctSettings::ShowSettingsDialog(const wxString& WXUNUSED(page))
275 {
276 ctSettingsDialog* dialog = new ctSettingsDialog(wxGetApp().GetTopWindow());
277 // if (!page.IsEmpty())
278 // dialog->GetNotebook()->SetSelection(apFindNotebookPage(dialog->GetNotebook(), page));
279
280 /* int ret = */ dialog->ShowModal();
281 dialog->Destroy();
282 }