]>
git.saurik.com Git - wxWidgets.git/blob - utils/configtool/src/appsettings.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: appsettings.cpp
3 // Purpose: Implements settings-related functionality
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
10 /////////////////////////////////////////////////////////////////////////////
12 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13 #pragma implementation "appsettings.h"
16 // For compilers that support precompilation, includes "wx/wx.h".
17 #include "wx/wxprec.h"
25 #include "wx/datstrm.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"
36 #include "wx/wfstream.h"
37 #include "wx/config.h"
38 #include "wx/fileconf.h"
39 #include "wx/valgen.h"
41 #include "wxconfigtool.h"
42 #include "appsettings.h"
43 #include "mainframe.h"
45 #include "settingsdialog.h"
48 * User-changeable settings
51 IMPLEMENT_DYNAMIC_CLASS(ctSettings
, wxObject
)
53 ctSettings::ctSettings()
57 m_showWelcomeDialog
= true;
58 m_exportDir
= wxEmptyString
;
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
);
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;
74 m_showTrayIcon
= true;
75 m_trayIconIsShown
= false;
76 m_useEnvironmentVariable
= true;
77 m_frameworkDir
= wxEmptyString
;
78 m_matchWholeWord
= false;
80 m_defaultFileKind
= wxT("Setup file");
84 ctSettings::ctSettings(const ctSettings
& settings
) : wxObject()
90 void ctSettings::operator = (const ctSettings
& settings
)
95 void ctSettings::Copy (const ctSettings
& settings
)
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
;
113 m_showTrayIcon
= settings
.m_showTrayIcon
;
114 m_trayIconIsShown
= settings
.m_trayIconIsShown
;
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
;
123 // Do some initialisation within stApp::OnInit
124 bool ctSettings::Init()
126 m_lastSetupSaveDir
= wxEmptyString
;
127 if (m_userName
.empty())
128 m_userName
= wxGetUserName();
133 // Create new filename
134 wxString
ctSettings::GenerateFilename(const wxString
& rootName
)
137 if (!m_lastFilename
.empty())
138 path
= wxPathOnly(m_lastFilename
);
140 path
= wxGetApp().GetAppDir();
142 wxString
filename(path
);
143 if (filename
.Last() != wxFILE_SEP_PATH
)
144 filename
+= wxFILE_SEP_PATH
;
145 filename
+= rootName
;
147 wxString fullFilename
= filename
+ wxT(".wxs");
150 while (wxFileExists(fullFilename
))
153 postfixStr
.Printf(_T("%d"), i
);
154 fullFilename
= filename
+ postfixStr
+ wxT(".wxs");
157 m_lastFilename
= fullFilename
;
162 bool ctSettings::LoadConfig()
164 wxConfig
config(wxGetApp().GetSettings().GetAppName(), wxT("wxWidgets"));
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
);
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
);
186 config
.Read(wxT("Windows/ShowToolBar"), (bool*) & m_showToolBar
);
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
);
198 fontSpec
= wxEmptyString
;
199 config
.Read(wxT("Style/EditWindowFont"), & fontSpec
);
200 if (!fontSpec
.empty())
201 m_editWindowFont
= apStringToFont(fontSpec
);
204 int runningProgram
= 0;
205 config
.Read(wxT("Misc/RunningProgram"), & runningProgram
);
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)
213 m_loadLastDocument
= false;
217 config
.Write(wxT("Misc/RunningProgram"), (long) 1);
223 bool ctSettings::SaveConfig()
225 wxConfig
config(wxGetApp().GetSettings().GetAppName(), wxT("wxWidgets"));
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
);
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
);
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
);
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
);
256 wxString backgroundColour(apColourToHexString(m_backgroundColour));
257 config.Write(wxT("Style/BackgroundColour"), backgroundColour);
260 config
.Write(wxT("Style/EditWindowFont"), apFontToString(m_editWindowFont
));
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);
267 config
.SetPath(wxT("FileHistory/"));
268 wxGetApp().GetDocManager()->FileHistorySave(config
);
274 void ctSettings::ShowSettingsDialog(const wxString
& WXUNUSED(page
))
276 ctSettingsDialog
* dialog
= new ctSettingsDialog(wxGetApp().GetTopWindow());
277 // if (!page.IsEmpty())
278 // dialog->GetNotebook()->SetSelection(apFindNotebookPage(dialog->GetNotebook(), page));
280 /* int ret = */ dialog
->ShowModal();