~ubuntu-branches/ubuntu/hardy/codeblocks/hardy-backports

« back to all changes in this revision

Viewing changes to src/sdk/externaldepsdlg.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Michael Casadevall
  • Date: 2008-07-17 04:39:23 UTC
  • Revision ID: james.westby@ubuntu.com-20080717043923-gmsy5cwkdjswghkm
Tags: upstream-8.02
ImportĀ upstreamĀ versionĀ 8.02

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
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
 
4
 *
 
5
 * $Revision: 4909 $
 
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 $
 
8
 */
 
9
 
 
10
#include "sdk_precomp.h"
 
11
 
 
12
#ifndef CB_PRECOMP
 
13
    #include "cbproject.h"
 
14
    #include "projectbuildtarget.h"
 
15
    #include <wx/xrc/xmlres.h>
 
16
    #include <wx/button.h>
 
17
    #include <wx/listbox.h>
 
18
    #include "globals.h"
 
19
#endif
 
20
 
 
21
#include "externaldepsdlg.h"
 
22
#include <wx/msgdlg.h>
 
23
#include "editpathdlg.h"
 
24
 
 
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)
 
35
END_EVENT_TABLE()
 
36
 
 
37
ExternalDepsDlg::ExternalDepsDlg(wxWindow* parent, cbProject* project, ProjectBuildTarget* target)
 
38
    : m_pProject(project),
 
39
    m_pTarget(target)
 
40
{
 
41
        //ctor
 
42
        wxXmlResource::Get()->LoadDialog(this, parent, _T("dlgExternalDeps"));
 
43
        FillAdditional();
 
44
        FillExternal();
 
45
}
 
46
 
 
47
ExternalDepsDlg::~ExternalDepsDlg()
 
48
{
 
49
        //dtor
 
50
}
 
51
 
 
52
void ExternalDepsDlg::FillAdditional()
 
53
{
 
54
        wxListBox* lst = XRCCTRL(*this, "lstAdditionalFiles", wxListBox);
 
55
        lst->Clear();
 
56
    wxArrayString array = GetArrayFromString(m_pTarget->GetAdditionalOutputFiles());
 
57
    for (unsigned int i = 0; i < array.GetCount(); ++i)
 
58
    {
 
59
        lst->Append(array[i]);
 
60
    }
 
61
}
 
62
 
 
63
void ExternalDepsDlg::FillExternal()
 
64
{
 
65
        wxListBox* lst = XRCCTRL(*this, "lstExternalFiles", wxListBox);
 
66
        lst->Clear();
 
67
    wxArrayString array = GetArrayFromString(m_pTarget->GetExternalDeps());
 
68
    for (unsigned int i = 0; i < array.GetCount(); ++i)
 
69
    {
 
70
        lst->Append(array[i]);
 
71
    }
 
72
}
 
73
 
 
74
void ExternalDepsDlg::EndModal(int retCode)
 
75
{
 
76
        wxString deps;
 
77
        wxListBox* lst = XRCCTRL(*this, "lstExternalFiles", wxListBox);
 
78
    for (unsigned int i = 0; i < (unsigned int)lst->GetCount(); ++i)
 
79
    {
 
80
        deps << lst->GetString(i) << _T(';');
 
81
    }
 
82
    m_pTarget->SetExternalDeps(deps);
 
83
 
 
84
        wxString files;
 
85
        lst = XRCCTRL(*this, "lstAdditionalFiles", wxListBox);
 
86
    for (unsigned int i = 0; i < (unsigned int)lst->GetCount(); ++i)
 
87
    {
 
88
        files << lst->GetString(i) << _T(';');
 
89
    }
 
90
    m_pTarget->SetAdditionalOutputFiles(files);
 
91
 
 
92
        return wxDialog::EndModal(retCode);
 
93
}
 
94
 
 
95
//void ExternalDepsDlg::DoAdd(const wxString& listbox, const wxString& message)
 
96
#define DoAdd(listbox,message)                              \
 
97
{                                                           \
 
98
        wxListBox* lst = XRCCTRL(*this, listbox, wxListBox);    \
 
99
    EditPathDlg dlg(this,                                   \
 
100
                    m_pProject->GetBasePath(),              \
 
101
                    m_pProject->GetBasePath(),              \
 
102
                    message,                                \
 
103
                    wxEmptyString,                          \
 
104
                    false);                                 \
 
105
    PlaceWindow(&dlg);                                      \
 
106
    if (dlg.ShowModal() == wxID_OK)                         \
 
107
        lst->Append(dlg.GetPath());                         \
 
108
}
 
109
 
 
110
//void ExternalDepsDlg::DoEdit(const wxString& listbox, const wxString& message)
 
111
#define DoEdit(listbox,message)                             \
 
112
{                                                           \
 
113
        wxListBox* lst = XRCCTRL(*this, listbox, wxListBox);    \
 
114
        int sel = lst->GetSelection();                          \
 
115
        if (sel == -1)                                          \
 
116
        return;                                             \
 
117
    EditPathDlg dlg(this,                                   \
 
118
                    lst->GetStringSelection(),              \
 
119
                    m_pProject->GetBasePath(),              \
 
120
                    message,                                \
 
121
                    wxEmptyString,                          \
 
122
                    false);                                 \
 
123
    PlaceWindow(&dlg);                                      \
 
124
    if (dlg.ShowModal() == wxID_OK)                         \
 
125
        lst->SetString(sel, dlg.GetPath());                 \
 
126
}
 
127
 
 
128
//void ExternalDepsDlg::DoDel(const wxString& listbox)
 
129
#define DoDel(listbox)                                      \
 
130
{                                                           \
 
131
        wxListBox* lst = XRCCTRL(*this, listbox, wxListBox);    \
 
132
        int sel = lst->GetSelection();                          \
 
133
        if (sel == -1)                                          \
 
134
        return;                                             \
 
135
    if (cbMessageBox(_("Are you sure you want to remove this file?"), _("Remove file"), wxYES_NO | wxNO_DEFAULT) == wxID_NO)   \
 
136
        return;                                             \
 
137
    lst->Delete(sel);                                       \
 
138
}
 
139
 
 
140
void ExternalDepsDlg::OnAddAdditional(wxCommandEvent& event)
 
141
{
 
142
        DoAdd("lstAdditionalFiles", _("Add additional output file"));
 
143
}
 
144
 
 
145
void ExternalDepsDlg::OnEditAdditional(wxCommandEvent& event)
 
146
{
 
147
        DoEdit("lstAdditionalFiles", _("Edit additional output file"));
 
148
}
 
149
 
 
150
void ExternalDepsDlg::OnDelAdditional(wxCommandEvent& event)
 
151
{
 
152
        DoDel("lstAdditionalFiles");
 
153
}
 
154
 
 
155
void ExternalDepsDlg::OnAddExternal(wxCommandEvent& event)
 
156
{
 
157
        DoAdd("lstExternalFiles", _("Add external dependency file"));
 
158
}
 
159
 
 
160
void ExternalDepsDlg::OnEditExternal(wxCommandEvent& event)
 
161
{
 
162
        DoEdit("lstExternalFiles", _("Edit external dependency file"));
 
163
}
 
164
 
 
165
void ExternalDepsDlg::OnDelExternal(wxCommandEvent& event)
 
166
{
 
167
        DoDel("lstExternalFiles");
 
168
}
 
169
 
 
170
void ExternalDepsDlg::OnUpdateUI(wxUpdateUIEvent& event)
 
171
{
 
172
        int selAdd = XRCCTRL(*this, "lstAdditionalFiles", wxListBox)->GetSelection();
 
173
        int selExt = XRCCTRL(*this, "lstExternalFiles", wxListBox)->GetSelection();
 
174
 
 
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);
 
179
}