2
* This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
3
* http://www.gnu.org/licenses/lgpl-3.0.html
10
#include "sdk_precomp.h"
11
#include "virtualbuildtargetsdlg.h"
14
#include "cbproject.h"
16
#include "wx/textdlg.h"
20
//(*InternalHeaders(VirtualBuildTargetsDlg)
21
#include <wx/bitmap.h>
23
#include <wx/fontenum.h>
24
#include <wx/fontmap.h>
27
#include <wx/settings.h>
28
#include <wx/xrc/xmlres.h>
31
//(*IdInit(VirtualBuildTargetsDlg)
34
BEGIN_EVENT_TABLE(VirtualBuildTargetsDlg,wxDialog)
35
//(*EventTable(VirtualBuildTargetsDlg)
37
EVT_UPDATE_UI(-1, VirtualBuildTargetsDlg::OnUpdateUI)
40
VirtualBuildTargetsDlg::VirtualBuildTargetsDlg(wxWindow* parent,wxWindowID id, cbProject* project)
48
//(*Initialize(VirtualBuildTargetsDlg)
49
wxXmlResource::Get()->LoadObject(this,parent,_T("VirtualBuildTargetsDlg"),_T("wxDialog"));
50
lstAliases = (wxListBox*)FindWindow(XRCID("ID_LISTBOX1"));
51
btnAdd = (wxButton*)FindWindow(XRCID("ID_BUTTON1"));
52
btnEdit = (wxButton*)FindWindow(XRCID("ID_BUTTON2"));
53
btnRemove = (wxButton*)FindWindow(XRCID("ID_BUTTON3"));
54
lstTargets = (wxCheckListBox*)FindWindow(XRCID("ID_CHECKLISTBOX1"));
55
Connect(XRCID("ID_LISTBOX1"),wxEVT_COMMAND_LISTBOX_SELECTED,(wxObjectEventFunction)&VirtualBuildTargetsDlg::OnAliasesSelect);
56
Connect(XRCID("ID_BUTTON1"),wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&VirtualBuildTargetsDlg::OnAddClick);
57
Connect(XRCID("ID_BUTTON2"),wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&VirtualBuildTargetsDlg::OnEditClick);
58
Connect(XRCID("ID_BUTTON3"),wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&VirtualBuildTargetsDlg::OnRemoveClick);
59
Connect(XRCID("ID_CHECKLISTBOX1"),wxEVT_COMMAND_CHECKLISTBOX_TOGGLED,(wxObjectEventFunction)&VirtualBuildTargetsDlg::OnTargetsToggled);
63
wxArrayString virtuals = m_pProject->GetVirtualBuildTargets();
64
lstAliases->Set(virtuals);
65
lstAliases->SetSelection(0);
68
for (int i = 0; i < m_pProject->GetBuildTargetsCount(); ++i)
69
lstTargets->Append(m_pProject->GetBuildTarget(i)->GetTitle());
73
VirtualBuildTargetsDlg::~VirtualBuildTargetsDlg()
75
//(*Destroy(VirtualBuildTargetsDlg)
79
void VirtualBuildTargetsDlg::SetVirtualTarget(const wxString& targetName)
81
if (!lstTargets->IsEnabled())
83
wxArrayString checked;
84
for (int i = 0; i < (int)lstTargets->GetCount(); ++i)
86
if (lstTargets->IsChecked(i))
87
checked.Add(lstTargets->GetString(i));
90
if (checked.GetCount() > 0)
92
if (!m_pProject->DefineVirtualBuildTarget(targetName, checked))
93
cbMessageBox(_("Failed to setup this virtual build target.\n"
94
"Check the debug log for more info..."), _("Error"), wxICON_ERROR);
98
void VirtualBuildTargetsDlg::CheckTargets()
100
const wxArrayString& group = m_pProject->GetVirtualBuildTargetGroup(lstAliases->GetStringSelection());
101
for (int i = 0; i < m_pProject->GetBuildTargetsCount(); ++i)
103
wxString tgtName = m_pProject->GetBuildTarget(i)->GetTitle();
104
bool check = group.Index(tgtName) != wxNOT_FOUND;
105
lstTargets->Check(i, check);
109
void VirtualBuildTargetsDlg::OnUpdateUI(wxUpdateUIEvent& event)
111
bool hasSel = lstAliases->GetSelection() != -1;
112
btnEdit->Enable(hasSel);
113
btnRemove->Enable(hasSel);
114
lstTargets->Enable(hasSel);
117
void VirtualBuildTargetsDlg::OnAddClick(wxCommandEvent& event)
119
wxString targetName = wxGetTextFromUser(_("Enter the new virtual build target name:"),
120
_("New virtual build target"));
121
if (targetName.IsEmpty())
124
if (lstAliases->FindString(targetName) != wxNOT_FOUND)
126
cbMessageBox(_("A virtual build target with this name already exists in this project!"),
128
wxOK | wxCENTRE | wxICON_ERROR);
132
if (m_pProject->GetBuildTarget(targetName))
134
cbMessageBox(_("A real build target with this name already exists in this project!"),
136
wxOK | wxCENTRE | wxICON_ERROR);
140
// add it with an empty group
141
lstAliases->Append(targetName);
142
lstAliases->SetSelection(lstAliases->GetCount() - 1);
146
void VirtualBuildTargetsDlg::OnEditClick(wxCommandEvent& event)
148
wxString targetName = wxGetTextFromUser(_("Enter the new virtual build target name:"),
149
_("Edit virtual build target"),
150
lstAliases->GetStringSelection());
152
// is name unchanged, or user cancelled?
153
if (targetName.IsEmpty() || targetName == lstAliases->GetStringSelection())
156
if (lstAliases->FindString(targetName) != wxNOT_FOUND)
158
cbMessageBox(_("A virtual build target with this name already exists in this project!"),
160
wxOK | wxCENTRE | wxICON_ERROR);
164
if (m_pProject->GetBuildTarget(targetName))
166
cbMessageBox(_("A real build target with this name already exists in this project!"),
168
wxOK | wxCENTRE | wxICON_ERROR);
172
m_pProject->RemoveVirtualBuildTarget(lstAliases->GetStringSelection());
173
lstAliases->SetString(lstAliases->GetSelection(), targetName);
174
SetVirtualTarget(targetName);
177
void VirtualBuildTargetsDlg::OnRemoveClick(wxCommandEvent& event)
179
if (cbMessageBox(_("Are you sure you want to remove this virtual build target?"), _("Confirmation"), wxYES_NO | wxICON_QUESTION) == wxID_NO)
181
m_pProject->RemoveVirtualBuildTarget(lstAliases->GetStringSelection());
182
lstAliases->Delete(lstAliases->GetSelection());
183
lstAliases->SetSelection(0);
187
void VirtualBuildTargetsDlg::OnAliasesSelect(wxCommandEvent& event)
192
void VirtualBuildTargetsDlg::OnTargetsToggled(wxCommandEvent& event)
194
SetVirtualTarget(lstAliases->GetStringSelection());