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
6
* $Id: externaldepsdlg.cpp 4909 2008-02-27 13:15:26Z mortenmacfly $
7
* $HeadURL: svn://svn.berlios.de/codeblocks/tags/8.02/src/sdk/externaldepsdlg.cpp $
10
#include "sdk_precomp.h"
13
#include "cbproject.h"
14
#include "projectbuildtarget.h"
15
#include <wx/xrc/xmlres.h>
16
#include <wx/button.h>
17
#include <wx/listbox.h>
21
#include "externaldepsdlg.h"
22
#include <wx/msgdlg.h>
23
#include "editpathdlg.h"
25
BEGIN_EVENT_TABLE(ExternalDepsDlg, wxDialog)
26
EVT_UPDATE_UI(-1, ExternalDepsDlg::OnUpdateUI)
27
EVT_LISTBOX_DCLICK(XRCID("lstAdditionalFiles"), ExternalDepsDlg::OnEditAdditional)
28
EVT_LISTBOX_DCLICK(XRCID("lstExternalFiles"), ExternalDepsDlg::OnEditExternal)
29
EVT_BUTTON(XRCID("btnAddAdditional"), ExternalDepsDlg::OnAddAdditional)
30
EVT_BUTTON(XRCID("btnEditAdditional"), ExternalDepsDlg::OnEditAdditional)
31
EVT_BUTTON(XRCID("btnDelAdditional"), ExternalDepsDlg::OnDelAdditional)
32
EVT_BUTTON(XRCID("btnAddExternal"), ExternalDepsDlg::OnAddExternal)
33
EVT_BUTTON(XRCID("btnEditExternal"), ExternalDepsDlg::OnEditExternal)
34
EVT_BUTTON(XRCID("btnDelExternal"), ExternalDepsDlg::OnDelExternal)
37
ExternalDepsDlg::ExternalDepsDlg(wxWindow* parent, cbProject* project, ProjectBuildTarget* target)
38
: m_pProject(project),
42
wxXmlResource::Get()->LoadDialog(this, parent, _T("dlgExternalDeps"));
47
ExternalDepsDlg::~ExternalDepsDlg()
52
void ExternalDepsDlg::FillAdditional()
54
wxListBox* lst = XRCCTRL(*this, "lstAdditionalFiles", wxListBox);
56
wxArrayString array = GetArrayFromString(m_pTarget->GetAdditionalOutputFiles());
57
for (unsigned int i = 0; i < array.GetCount(); ++i)
59
lst->Append(array[i]);
63
void ExternalDepsDlg::FillExternal()
65
wxListBox* lst = XRCCTRL(*this, "lstExternalFiles", wxListBox);
67
wxArrayString array = GetArrayFromString(m_pTarget->GetExternalDeps());
68
for (unsigned int i = 0; i < array.GetCount(); ++i)
70
lst->Append(array[i]);
74
void ExternalDepsDlg::EndModal(int retCode)
77
wxListBox* lst = XRCCTRL(*this, "lstExternalFiles", wxListBox);
78
for (unsigned int i = 0; i < (unsigned int)lst->GetCount(); ++i)
80
deps << lst->GetString(i) << _T(';');
82
m_pTarget->SetExternalDeps(deps);
85
lst = XRCCTRL(*this, "lstAdditionalFiles", wxListBox);
86
for (unsigned int i = 0; i < (unsigned int)lst->GetCount(); ++i)
88
files << lst->GetString(i) << _T(';');
90
m_pTarget->SetAdditionalOutputFiles(files);
92
return wxDialog::EndModal(retCode);
95
//void ExternalDepsDlg::DoAdd(const wxString& listbox, const wxString& message)
96
#define DoAdd(listbox,message) \
98
wxListBox* lst = XRCCTRL(*this, listbox, wxListBox); \
99
EditPathDlg dlg(this, \
100
m_pProject->GetBasePath(), \
101
m_pProject->GetBasePath(), \
106
if (dlg.ShowModal() == wxID_OK) \
107
lst->Append(dlg.GetPath()); \
110
//void ExternalDepsDlg::DoEdit(const wxString& listbox, const wxString& message)
111
#define DoEdit(listbox,message) \
113
wxListBox* lst = XRCCTRL(*this, listbox, wxListBox); \
114
int sel = lst->GetSelection(); \
117
EditPathDlg dlg(this, \
118
lst->GetStringSelection(), \
119
m_pProject->GetBasePath(), \
124
if (dlg.ShowModal() == wxID_OK) \
125
lst->SetString(sel, dlg.GetPath()); \
128
//void ExternalDepsDlg::DoDel(const wxString& listbox)
129
#define DoDel(listbox) \
131
wxListBox* lst = XRCCTRL(*this, listbox, wxListBox); \
132
int sel = lst->GetSelection(); \
135
if (cbMessageBox(_("Are you sure you want to remove this file?"), _("Remove file"), wxYES_NO | wxNO_DEFAULT) == wxID_NO) \
140
void ExternalDepsDlg::OnAddAdditional(wxCommandEvent& event)
142
DoAdd("lstAdditionalFiles", _("Add additional output file"));
145
void ExternalDepsDlg::OnEditAdditional(wxCommandEvent& event)
147
DoEdit("lstAdditionalFiles", _("Edit additional output file"));
150
void ExternalDepsDlg::OnDelAdditional(wxCommandEvent& event)
152
DoDel("lstAdditionalFiles");
155
void ExternalDepsDlg::OnAddExternal(wxCommandEvent& event)
157
DoAdd("lstExternalFiles", _("Add external dependency file"));
160
void ExternalDepsDlg::OnEditExternal(wxCommandEvent& event)
162
DoEdit("lstExternalFiles", _("Edit external dependency file"));
165
void ExternalDepsDlg::OnDelExternal(wxCommandEvent& event)
167
DoDel("lstExternalFiles");
170
void ExternalDepsDlg::OnUpdateUI(wxUpdateUIEvent& event)
172
int selAdd = XRCCTRL(*this, "lstAdditionalFiles", wxListBox)->GetSelection();
173
int selExt = XRCCTRL(*this, "lstExternalFiles", wxListBox)->GetSelection();
175
XRCCTRL(*this, "btnEditAdditional", wxButton)->Enable(selAdd != -1);
176
XRCCTRL(*this, "btnDelAdditional", wxButton)->Enable(selAdd != -1);
177
XRCCTRL(*this, "btnEditExternal", wxButton)->Enable(selExt != -1);
178
XRCCTRL(*this, "btnDelExternal", wxButton)->Enable(selExt != -1);