When any of these settings are 1, this setting becomes active and indeterminate. Taking wxUSE_UNICODE as an example:
If Custom is 1, wxUSE_UNICODE is indeterminate."), + wxVariant(wxT(""), wxT("indeterminate-if")), + wxT("configitems"))); + m_properties.AddProperty( new ctProperty( wxT("Exclusivity
The settings that are mutually exclusive with this one."),
@@ -266,6 +272,7 @@ void ctConfigItem::ApplyProperty(ctProperty* prop, const wxVariant& oldValue)
name == wxT("precludes") ||
name == wxT("enabled-if") ||
name == wxT("enabled-if-not") ||
+ name == wxT("indeterminate-if") ||
name == wxT("context"))
{
doc->RefreshDependencies();
@@ -481,11 +488,14 @@ bool ctConfigItem::IsInActiveContext()
/// then this one is disabled (and inactive).
void ctConfigItem::EvaluateDependencies()
{
+ // For debugging purposes
+ wxString name = GetName();
wxList items;
wxString requires = GetPropertyString(wxT("requires"));
wxString precludes = GetPropertyString(wxT("precludes"));
wxString enabledIf = GetPropertyString(wxT("enabled-if"));
wxString enabledIfNot = GetPropertyString(wxT("enabled-if-not"));
+ wxString indeterminateIf = GetPropertyString(wxT("indeterminate-if"));
bool active = TRUE;
bool enabled = IsEnabled();
@@ -581,6 +591,7 @@ void ctConfigItem::EvaluateDependencies()
for ( wxNode* node = items.GetFirst(); node; node = node->GetNext() )
{
ctConfigItem* otherItem = (ctConfigItem*) node->GetData();
+ wxString otherName = otherItem->GetName();
if (inActiveContext && otherItem->IsInActiveContext())
{
@@ -608,6 +619,44 @@ void ctConfigItem::EvaluateDependencies()
{
StringToItems(GetDocument()->GetTopItem(), precludes, items);
int enabledCount = 0;
+ // int disabledCount = 0;
+ int inContextCount = 0;
+
+ for ( wxNode* node = items.GetFirst(); node; node = node->GetNext() )
+ {
+ ctConfigItem* otherItem = (ctConfigItem*) node->GetData();
+
+ if (inActiveContext && otherItem->IsInActiveContext())
+ {
+ // Make this disabled and inactive, _unless_ it's
+ // already been explicitly enabled in the previous
+ // requires evaluation (it really _has_ to be on)
+// if (!otherItem->IsEnabled())
+ if (otherItem->IsEnabled())
+ {
+ enabledCount ++;
+ // disabledCount ++;
+ }
+ inContextCount ++;
+ }
+ }
+ // Disable if there were no related items that were disabled
+ if (inContextCount > 0 && (enabledCount > 0) && !explicitlyEnabled)
+// if (inContextCount > 0 && (disabledCount > 0) && !explicitlyEnabled)
+ {
+ enabled = FALSE;
+ active = FALSE;
+ explicitlyDisabled = TRUE;
+ }
+ }
+
+ // Indeterminate overrides the others, and
+ // makes the item active.
+ items.Clear();
+ if (!indeterminateIf.IsEmpty())
+ {
+ StringToItems(GetDocument()->GetTopItem(), indeterminateIf, items);
+ int enabledCount = 0;
int inContextCount = 0;
for ( wxNode* node = items.GetFirst(); node; node = node->GetNext() )
@@ -616,20 +665,18 @@ void ctConfigItem::EvaluateDependencies()
if (inActiveContext && otherItem->IsInActiveContext())
{
- // Make this enabled and inactive, _unless_ it's
- // already been explicitly disabled in the previous
- // requires evaluation (it really _has_ to be off)
if (otherItem->IsEnabled())
{
enabledCount ++;
}
+ inContextCount ++;
}
}
- // Disable if there were no related items that were disabled
- if (inContextCount > 0 && (enabledCount == inContextCount) && !explicitlyEnabled)
+ if (inContextCount > 0 && enabledCount > 0)
{
- enabled = FALSE;
- active = FALSE;
+ active = TRUE;
+ explicitlyEnabled = FALSE;
+ explicitlyDisabled = FALSE;
}
}
@@ -637,6 +684,13 @@ void ctConfigItem::EvaluateDependencies()
// context is active. If not, make this inactive.
if (!IsInActiveContext())
active = FALSE;
+ else
+ {
+ // If we didn't explicitly enable or disable it,
+ // then we should make it active.
+ if (!explicitlyEnabled && !explicitlyDisabled)
+ active = TRUE;
+ }
SetActive(active);
diff --git a/utils/configtool/src/configtooldoc.cpp b/utils/configtool/src/configtooldoc.cpp
index 3a50aadd83..660af43535 100644
--- a/utils/configtool/src/configtooldoc.cpp
+++ b/utils/configtool/src/configtooldoc.cpp
@@ -575,6 +575,7 @@ void ctConfigToolDoc::RefreshDependencies(ctConfigItem* item)
wxString precludes = item->GetPropertyString(wxT("precludes"));
wxString enabledIf = item->GetPropertyString(wxT("enabled-if"));
wxString enabledIfNot = item->GetPropertyString(wxT("enabled-if-not"));
+ wxString indeterminateIf = item->GetPropertyString(wxT("indeterminate-if"));
wxString context = item->GetPropertyString(wxT("context"));
if (!requires.IsEmpty())
@@ -589,6 +590,9 @@ void ctConfigToolDoc::RefreshDependencies(ctConfigItem* item)
if (!enabledIf.IsEmpty())
item->StringToArray(enabledIf, requiresArr);
+ if (!indeterminateIf.IsEmpty())
+ item->StringToArray(indeterminateIf, requiresArr);
+
// Add the parent to the list of dependencies, if the
// parent is a check or radio group.
ctConfigItem* parent = item->GetParent();
diff --git a/utils/configtool/src/configtoolview.cpp b/utils/configtool/src/configtoolview.cpp
index 5f62dcb51a..138fc3eac5 100644
--- a/utils/configtool/src/configtoolview.cpp
+++ b/utils/configtool/src/configtoolview.cpp
@@ -91,6 +91,9 @@ BEGIN_EVENT_TABLE(ctConfigToolView, wxView)
EVT_MENU(wxID_FIND, ctConfigToolView::OnFind)
EVT_UPDATE_UI(wxID_FIND, ctConfigToolView::OnUpdateFind)
+ EVT_MENU(ctID_GO, ctConfigToolView::OnGo)
+ EVT_UPDATE_UI(ctID_GO, ctConfigToolView::OnUpdateGo)
+
END_EVENT_TABLE()
ctConfigToolView::ctConfigToolView()
@@ -352,11 +355,17 @@ void ctConfigToolView::OnIconLeftDown(ctConfigTreeCtrl* treeControl, ctConfigIte
SyncItem(treeControl, item);
wxList considered;
- item->PropagateChange(considered);
if ((item->GetType() == ctTypeBoolRadio || item->GetType() == ctTypeRadioGroup) && item->IsEnabled())
{
item->PropagateRadioButton(considered);
}
+ item->PropagateChange(considered);
+
+ // Update the setup.h and configure text
+ if (wxGetApp().GetMainFrame()->GetMainNotebook()->GetSelection() > 0)
+ {
+ RegenerateSetup();
+ }
}
}
@@ -905,7 +914,9 @@ void ctConfigToolView::OnSaveSetupFile(wxCommandEvent& event)
wxString setupStr = doc->GenerateSetup();
wxString filename = _T("setup.h");
- wxString path = doc->GetFrameworkDir(FALSE);
+ wxString path = wxGetApp().GetSettings().m_lastSetupSaveDir;
+ if (path.IsEmpty())
+ path = doc->GetFrameworkDir(FALSE);
wxString wildcard = _T("Header files (*.h)|*.h|All files (*.*)|*.*");
wxFileDialog dialog(wxTheApp->GetTopWindow(),
@@ -916,8 +927,7 @@ void ctConfigToolView::OnSaveSetupFile(wxCommandEvent& event)
if (dialog.ShowModal() == wxID_OK)
{
wxString fullPath = dialog.GetPath();
-
- // TODO: save last saved path in settings.
+ wxGetApp().GetSettings().m_lastSetupSaveDir = wxPathOnly(fullPath);
wxFileOutputStream stream(fullPath);
if (!stream.Ok())
@@ -936,7 +946,9 @@ void ctConfigToolView::OnSaveConfigureCommand(wxCommandEvent& event)
wxString configureStr = doc->GenerateConfigureCommand();
wxString filename = _T("configurewx.sh");
- wxString path = doc->GetFrameworkDir(FALSE);
+ wxString path = wxGetApp().GetSettings().m_lastSetupSaveDir;
+ if (path.IsEmpty())
+ path = doc->GetFrameworkDir(FALSE);
wxString wildcard = _T("Shell script files (*.sh)|*.sh|All files (*.*)|*.*");
wxFileDialog dialog(wxTheApp->GetTopWindow(),
@@ -947,8 +959,7 @@ void ctConfigToolView::OnSaveConfigureCommand(wxCommandEvent& event)
if (dialog.ShowModal() == wxID_OK)
{
wxString fullPath = dialog.GetPath();
-
- // TODO: save last saved path in settings.
+ wxGetApp().GetSettings().m_lastSetupSaveDir = wxPathOnly(fullPath);
wxFileOutputStream stream(fullPath);
if (!stream.Ok())
@@ -1003,6 +1014,75 @@ void ctConfigToolView::OnUpdateFind(wxUpdateUIEvent& event)
event.Enable(TRUE);
}
+/// Save default file type
+void ctConfigToolView::OnGo(wxCommandEvent& event)
+{
+ ctConfigToolDoc* doc = (ctConfigToolDoc*) GetDocument();
+ wxString path = wxGetApp().GetSettings().m_lastSetupSaveDir;
+ if (!path.IsEmpty())
+ {
+ if (wxGetApp().GetSettings().m_defaultFileKind == wxT("Setup file"))
+ {
+ // setup.h
+ wxString setupStr = doc->GenerateSetup();
+
+ wxString fullPath = path + wxFILE_SEP_PATH + wxT("setup.h");
+ if (wxFileExists(fullPath))
+ {
+ wxString msg;
+ msg.Printf(wxT("Overwrite existing file %s?"), (const wxChar*) fullPath);
+ int ans = wxMessageBox(msg, _("Save Setup File"), wxICON_QUESTION|wxYES_NO|wxCANCEL);
+ if (ans == wxCANCEL)
+ return;
+ if (ans == wxNO)
+ return;
+ }
+ wxFileOutputStream stream(fullPath);
+ if (!stream.Ok())
+ {
+ wxMessageBox(_("Sorry, could not save this file."), _("Save Setup File"), wxICON_EXCLAMATION|wxOK);
+ return;
+ }
+ stream << setupStr;
+ }
+ else if (wxGetApp().GetSettings().m_defaultFileKind == wxT("Configure script"))
+ {
+ // configurewx.sh
+ wxString configureStr = doc->GenerateConfigureCommand();
+
+ wxString fullPath = path + wxFILE_SEP_PATH + wxT("configurewx.sh");
+ if (wxFileExists(fullPath))
+ {
+ wxString msg;
+ msg.Printf(wxT("Overwrite existing file %s?"), (const wxChar*) fullPath);
+ int ans = wxMessageBox(msg, _("Save Configure Script"), wxICON_QUESTION|wxYES_NO|wxCANCEL);
+ if (ans == wxCANCEL)
+ return;
+ if (ans == wxNO)
+ return;
+ }
+ wxFileOutputStream stream(fullPath);
+ if (!stream.Ok())
+ {
+ wxMessageBox(_("Sorry, could not save this file."), _("Save Configure Script"), wxICON_EXCLAMATION|wxOK);
+ return;
+ }
+ stream << configureStr;
+ }
+ else
+ {
+ wxMessageBox(wxT("Unrecognised default file type."));
+ }
+ }
+}
+
+/// Update
+void ctConfigToolView::OnUpdateGo(wxUpdateUIEvent& event)
+{
+ wxString path = wxGetApp().GetSettings().m_lastSetupSaveDir;
+ event.Enable(!path.IsEmpty());
+}
+
//----------------------------------------------------------------------------
// ctFindReplaceDialog
//----------------------------------------------------------------------------
diff --git a/utils/configtool/src/configtoolview.h b/utils/configtool/src/configtoolview.h
index 02ea972f5b..85002eedf6 100644
--- a/utils/configtool/src/configtoolview.h
+++ b/utils/configtool/src/configtoolview.h
@@ -199,6 +199,14 @@ public:
/// Update find text
void OnUpdateFind(wxUpdateUIEvent& event);
+ // Go (now: save setup.h or configurewx.sh. later: invoke configure/make)
+
+ /// Save default file type
+ void OnGo(wxCommandEvent& event);
+
+ /// Update
+ void OnUpdateGo(wxUpdateUIEvent& event);
+
DECLARE_EVENT_TABLE()
protected:
diff --git a/utils/configtool/src/mainframe.cpp b/utils/configtool/src/mainframe.cpp
index 591e2a0026..bfd09b31e7 100644
--- a/utils/configtool/src/mainframe.cpp
+++ b/utils/configtool/src/mainframe.cpp
@@ -46,6 +46,7 @@
#include "bitmaps/undo.xpm"
#include "bitmaps/redo.xpm"
#include "bitmaps/helpcs.xpm"
+#include "bitmaps/go.xpm"
IMPLEMENT_CLASS(ctMainFrame, wxDocParentFrame)
@@ -82,6 +83,8 @@ BEGIN_EVENT_TABLE(ctMainFrame, wxDocParentFrame)
EVT_UPDATE_UI(ctID_SAVE_CONFIGURE_COMMAND, ctMainFrame::OnUpdateDisable)
EVT_UPDATE_UI(wxID_FIND, ctMainFrame::OnUpdateDisable)
+
+ EVT_UPDATE_UI(ctID_GO, ctMainFrame::OnUpdateDisable)
END_EVENT_TABLE()
// Define my frame constructor
@@ -222,7 +225,7 @@ void ctMainFrame::InitToolBar(wxToolBar* toolBar)
toolBarBitmaps[3] = wxBitmap(copy_xpm);
toolBarBitmaps[4] = wxBitmap(cut_xpm);
toolBarBitmaps[5] = wxBitmap(paste_xpm);
-// toolBarBitmaps[6] = wxBitmap(print_xpm);
+ toolBarBitmaps[6] = wxBitmap(go_xpm);
toolBarBitmaps[7] = wxBitmap(help_xpm);
toolBarBitmaps[10] = wxBitmap(undo_xpm);
toolBarBitmaps[11] = wxBitmap(redo_xpm);
@@ -241,6 +244,8 @@ void ctMainFrame::InitToolBar(wxToolBar* toolBar)
toolBar->AddTool(wxID_UNDO, toolBarBitmaps[10], wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, wxT("Undo"));
toolBar->AddTool(wxID_REDO, toolBarBitmaps[11], wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, wxT("Redo"));
toolBar->AddSeparator();
+ toolBar->AddTool(ctID_GO, toolBarBitmaps[6], wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, wxT("Save setup.h or configurewx.sh"));
+ toolBar->AddSeparator();
toolBar->AddTool(ctID_ITEM_HELP, toolBarBitmaps[12], wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, wxT("Show help for this option"));
toolBar->AddTool(wxID_HELP_CONTEXT, toolBarBitmaps[13], wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, wxT("Show help on the clicked item"));
@@ -266,6 +271,8 @@ wxMenuBar* ctMainFrame::CreateMenuBar()
fileMenu->Append(ctID_SAVE_SETUP_FILE, wxT("Save Setup.&h...\tCtrl+H"), wxT("Save the setup.h file"));
fileMenu->Append(ctID_SAVE_CONFIGURE_COMMAND, wxT("Save Configure Script...\tCtrl+G"), wxT("Save the configure script file"));
fileMenu->AppendSeparator();
+ fileMenu->Append(ctID_GO, wxT("&Go\tF5"), wxT("Quick-save the setup.h or configure.sh file"));
+ fileMenu->AppendSeparator();
fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt+F4"), wxT("Exit the application"));
wxGetApp().GetDocManager()->FileHistoryUseMenu(fileMenu);
diff --git a/utils/configtool/src/settingsdialog.cpp b/utils/configtool/src/settingsdialog.cpp
index 15b5833054..fa40c655af 100644
--- a/utils/configtool/src/settingsdialog.cpp
+++ b/utils/configtool/src/settingsdialog.cpp
@@ -82,28 +82,28 @@ void ctSettingsDialog::CreateControls()
wxNotebookSizer* item3Sizer = new wxNotebookSizer(item3);
ctGeneralSettingsDialog* item4 = new ctGeneralSettingsDialog(item3, ID_GENERAL_SETTINGS_DIALOG, wxDefaultPosition, wxSize(100, 80), 0);
item3->AddPage(item4, _("General"));
- ctLocationSettingsDialog* item9 = new ctLocationSettingsDialog(item3, ID_LOCATION_SETTINGS_DIALOG, wxDefaultPosition, wxSize(100, 80), 0);
- item3->AddPage(item9, _("Locations"));
+ ctLocationSettingsDialog* item11 = new ctLocationSettingsDialog(item3, ID_LOCATION_SETTINGS_DIALOG, wxDefaultPosition, wxSize(100, 80), 0);
+ item3->AddPage(item11, _("Locations"));
item2->Add(item3Sizer, 0, wxGROW|wxALL, 5);
- wxBoxSizer* item19 = new wxBoxSizer(wxHORIZONTAL);
- item2->Add(item19, 0, wxGROW|wxALL, 5);
+ wxBoxSizer* item21 = new wxBoxSizer(wxHORIZONTAL);
+ item2->Add(item21, 0, wxGROW|wxALL, 5);
- item19->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ item21->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- wxButton* item21 = new wxButton(item1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0);
- item21->SetDefault();
- item19->Add(item21, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxButton* item23 = new wxButton(item1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0);
+ item23->SetDefault();
+ item21->Add(item23, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- wxButton* item22 = new wxButton(item1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0);
- item19->Add(item22, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxButton* item24 = new wxButton(item1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0);
+ item21->Add(item24, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- wxButton* item23 = new wxButton(item1, wxID_HELP, _("&Help"), wxDefaultPosition, wxDefaultSize, 0);
- item19->Add(item23, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxButton* item25 = new wxButton(item1, wxID_HELP, _("&Help"), wxDefaultPosition, wxDefaultSize, 0);
+ item21->Add(item25, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
#if defined(__WXGTK__) || defined(__WXMAC__)
- wxContextHelpButton* item24 = new wxContextHelpButton(item1, wxID_CONTEXT_HELP, wxDefaultPosition, wxSize(20, -1), wxBU_AUTODRAW);
- item19->Add(item24, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxContextHelpButton* item26 = new wxContextHelpButton(item1, wxID_CONTEXT_HELP, wxDefaultPosition, wxSize(20, -1), wxBU_AUTODRAW);
+ item21->Add(item26, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
#endif
GetSizer()->Fit(this);
@@ -219,17 +219,38 @@ void ctGeneralSettingsDialog::CreateControls()
wxCheckBox* item7 = new wxCheckBox(item4, ID_LOAD_LAST_DOCUMENT, _("&Load last document"), wxDefaultPosition, wxDefaultSize, 0);
item7->SetValue(FALSE);
+ item7->SetHelpText(_("Check to load the last document on startup"));
+ if (ShowToolTips())
+ item7->SetToolTip(_("Check to load the last document on startup"));
item6->Add(item7, 0, wxALIGN_LEFT|wxALL, 5);
wxCheckBox* item8 = new wxCheckBox(item4, ID_SHOW_TOOLTIPS, _("&Show tooltips"), wxDefaultPosition, wxDefaultSize, 0);
item8->SetValue(FALSE);
+ item8->SetHelpText(_("Check to show tooltips"));
+ if (ShowToolTips())
+ item8->SetToolTip(_("Check to show tooltips"));
item6->Add(item8, 0, wxALIGN_LEFT|wxALL, 5);
+ wxStaticText* item9 = new wxStaticText(item4, wxID_STATIC, _("&Default file kind to save when using the Go command:"), wxDefaultPosition, wxDefaultSize, 0);
+ item6->Add(item9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
+
+ wxString item10Strings[] = {
+ _("Setup file"),
+ _("Configure script")
+ };
+ wxChoice* item10 = new wxChoice(item4, ID_DEFAULT_FILE_KIND, wxDefaultPosition, wxSize(200, -1), 2, item10Strings, 0);
+ item10->SetStringSelection(_("Setup file"));
+ item10->SetHelpText(_("Select the default kind of file to save using Go"));
+ if (ShowToolTips())
+ item10->SetToolTip(_("Select the default kind of file to save using Go"));
+ item6->Add(item10, 0, wxGROW|wxALL, 5);
+
GetSizer()->Fit(this);
////@end ctGeneralSettingsDialog content construction
FindWindow(ID_LOAD_LAST_DOCUMENT)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_loadLastDocument));
FindWindow(ID_SHOW_TOOLTIPS)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useToolTips));
+ FindWindow(ID_DEFAULT_FILE_KIND)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_defaultFileKind));
}
/*!
@@ -282,36 +303,45 @@ void ctLocationSettingsDialog::CreateControls()
{
////@begin ctLocationSettingsDialog content construction
- ctLocationSettingsDialog* item9 = this;
+ ctLocationSettingsDialog* item11 = this;
- wxBoxSizer* item10 = new wxBoxSizer(wxVERTICAL);
- item9->SetSizer(item10);
- item9->SetAutoLayout(TRUE);
+ wxBoxSizer* item12 = new wxBoxSizer(wxVERTICAL);
+ item11->SetSizer(item12);
+ item11->SetAutoLayout(TRUE);
- wxStaticBox* item11Static = new wxStaticBox(item9, -1, _("Locations"));
- wxStaticBoxSizer* item11 = new wxStaticBoxSizer(item11Static, wxVERTICAL);
- item10->Add(item11, 1, wxGROW|wxALL, 5);
+ wxStaticBox* item13Static = new wxStaticBox(item11, -1, _("Locations"));
+ wxStaticBoxSizer* item13 = new wxStaticBoxSizer(item13Static, wxVERTICAL);
+ item12->Add(item13, 1, wxGROW|wxALL, 5);
- wxStaticText* item12 = new wxStaticText(item9, wxID_STATIC, _("&wxWindows hierarchy:"), wxDefaultPosition, wxDefaultSize, 0);
- item11->Add(item12, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
+ wxStaticText* item14 = new wxStaticText(item11, wxID_STATIC, _("&wxWindows hierarchy:"), wxDefaultPosition, wxDefaultSize, 0);
+ item13->Add(item14, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
- wxBoxSizer* item13 = new wxBoxSizer(wxHORIZONTAL);
- item11->Add(item13, 0, wxGROW, 5);
+ wxBoxSizer* item15 = new wxBoxSizer(wxHORIZONTAL);
+ item13->Add(item15, 0, wxGROW, 5);
- wxTextCtrl* item14 = new wxTextCtrl(item9, ID_WXWIN_HIERARCHY, _(""), wxDefaultPosition, wxSize(200, -1), 0);
- item13->Add(item14, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxTextCtrl* item16 = new wxTextCtrl(item11, ID_WXWIN_HIERARCHY, _(""), wxDefaultPosition, wxSize(200, -1), 0);
+ item16->SetHelpText(_("Enter the root path of the wxWindows hierarchy"));
+ if (ShowToolTips())
+ item16->SetToolTip(_("Enter the root path of the wxWindows hierarchy"));
+ item15->Add(item16, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- wxButton* item15 = new wxButton(item9, ID_CHOOSE_WXWIN_HIERARCHY, _("&Choose..."), wxDefaultPosition, wxDefaultSize, 0);
- item13->Add(item15, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxButton* item17 = new wxButton(item11, ID_CHOOSE_WXWIN_HIERARCHY, _("&Choose..."), wxDefaultPosition, wxDefaultSize, 0);
+ item17->SetHelpText(_("Click to choose the root path of the wxWindows hierarchy\\n"));
+ if (ShowToolTips())
+ item17->SetToolTip(_("Click to choose the root path of the wxWindows hierarchy\\n"));
+ item15->Add(item17, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- wxBoxSizer* item16 = new wxBoxSizer(wxHORIZONTAL);
- item11->Add(item16, 0, wxGROW, 5);
+ wxBoxSizer* item18 = new wxBoxSizer(wxHORIZONTAL);
+ item13->Add(item18, 0, wxGROW, 5);
- item16->Add(60, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ item18->Add(60, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- wxCheckBox* item18 = new wxCheckBox(item9, ID_USE_WXWIN, _("&Use WXWIN environment variable"), wxDefaultPosition, wxDefaultSize, 0);
- item18->SetValue(FALSE);
- item16->Add(item18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxCheckBox* item20 = new wxCheckBox(item11, ID_USE_WXWIN, _("&Use WXWIN environment variable"), wxDefaultPosition, wxDefaultSize, 0);
+ item20->SetValue(FALSE);
+ item20->SetHelpText(_("Check to use the value of WXWIN instead"));
+ if (ShowToolTips())
+ item20->SetToolTip(_("Check to use the value of WXWIN instead"));
+ item18->Add(item20, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
GetSizer()->Fit(this);
////@end ctLocationSettingsDialog content construction
diff --git a/utils/configtool/src/settingsdialog.h b/utils/configtool/src/settingsdialog.h
index bee8b64381..43939248de 100644
--- a/utils/configtool/src/settingsdialog.h
+++ b/utils/configtool/src/settingsdialog.h
@@ -42,6 +42,7 @@ class ctLocationSettingsDialog;
#define ID_GENERAL_SETTINGS_DIALOG 10005
#define ID_LOAD_LAST_DOCUMENT 10006
#define ID_SHOW_TOOLTIPS 10007
+#define ID_DEFAULT_FILE_KIND 10003
#define ID_LOCATION_SETTINGS_DIALOG 10008
#define ID_WXWIN_HIERARCHY 10010
#define ID_CHOOSE_WXWIN_HIERARCHY 10011
diff --git a/utils/configtool/src/wxconfigtool.h b/utils/configtool/src/wxconfigtool.h
index 72ed69e763..a88f72962a 100644
--- a/utils/configtool/src/wxconfigtool.h
+++ b/utils/configtool/src/wxconfigtool.h
@@ -136,6 +136,7 @@ DECLARE_APP(ctApp)
// File menu ids
#define ctID_SAVE_SETUP_FILE 1001
#define ctID_SAVE_CONFIGURE_COMMAND 1002
+#define ctID_GO 1003
// Edit menu ids
#define ctID_ADD_ITEM 1030
diff --git a/utils/configtool/src/wxconfigtool.pjd b/utils/configtool/src/wxconfigtool.pjd
index 10e27d572a..d647bb5e4b 100644
--- a/utils/configtool/src/wxconfigtool.pjd
+++ b/utils/configtool/src/wxconfigtool.pjd
@@ -12,7 +12,7 @@