~ubuntu-branches/debian/sid/boinc/sid

« back to all changes in this revision

Viewing changes to clientgui/ProjectInfoPage.cpp

  • Committer: Package Import Robot
  • Author(s): Steffen Moeller
  • Date: 2011-08-08 01:36:51 UTC
  • mfrom: (6.1.11 experimental)
  • Revision ID: package-import@ubuntu.com-20110808013651-m1hs3cltiveuteyn
Tags: 6.13.1+dfsg-2
* Bringing notify patch to unstable.
* Adjusted build dependency to libjpeg-dev (Closes: #641093)
* Further improvements on stripchart.

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
#include "BOINCBaseWizard.h"
38
38
#include "WizardAttach.h"
39
39
#include "ProjectInfoPage.h"
40
 
#include "ProjectListCtrl.h"
 
40
 
 
41
 
 
42
#include "res/windowsicon.xpm"
 
43
#include "res/macosicon.xpm"
 
44
#include "res/linuxicon.xpm"
 
45
#include "res/atiicon.xpm"
 
46
#include "res/nvidiaicon.xpm"
 
47
#include "res/multicore.xpm"
 
48
#include "res/blankicon.xpm"
 
49
 
 
50
 
 
51
/*!
 
52
 * CProject type
 
53
 */
 
54
 
 
55
class CProjectInfo : public wxObject
 
56
{
 
57
    DECLARE_DYNAMIC_CLASS( CProjectInfo )
 
58
    CProjectInfo() {
 
59
        m_bSupportedPlatformFound = false;
 
60
        m_bProjectSupportsWindows = false;
 
61
        m_bProjectSupportsMac = false;
 
62
        m_bProjectSupportsLinux = false;
 
63
        m_bProjectSupportsCUDA = false;
 
64
        m_bProjectSupportsCAL = false;
 
65
        m_bProjectSupportsMulticore = false;
 
66
    }
 
67
 
 
68
public:
 
69
    wxString m_strURL;
 
70
    wxString m_strName;
 
71
    wxString m_strDescription;
 
72
    wxString m_strGeneralArea;
 
73
    wxString m_strSpecificArea;
 
74
    wxString m_strOrganization;
 
75
    bool m_bSupportedPlatformFound;
 
76
    bool m_bProjectSupportsWindows;
 
77
    bool m_bProjectSupportsMac;
 
78
    bool m_bProjectSupportsLinux;
 
79
    bool m_bProjectSupportsCUDA;
 
80
    bool m_bProjectSupportsCAL;
 
81
    bool m_bProjectSupportsMulticore;
 
82
};
 
83
 
 
84
IMPLEMENT_DYNAMIC_CLASS( CProjectInfo, wxObject )
41
85
 
42
86
 
43
87
/*!
53
97
BEGIN_EVENT_TABLE( CProjectInfoPage, wxWizardPageEx )
54
98
 
55
99
////@begin CProjectInfoPage event table entries
 
100
    EVT_COMBOBOX( ID_CATEGORIES, CProjectInfoPage::OnProjectCategorySelected )
 
101
    EVT_LISTBOX( ID_PROJECTS, CProjectInfoPage::OnProjectSelected )
56
102
    EVT_WIZARDEX_PAGE_CHANGED( -1, CProjectInfoPage::OnPageChanged )
57
103
    EVT_WIZARDEX_PAGE_CHANGING( -1, CProjectInfoPage::OnPageChanging )
58
 
    EVT_PROJECTLIST_ITEM_CHANGE( CProjectInfoPage::OnProjectItemChange )
59
 
    EVT_PROJECTLIST_ITEM_DISPLAY( CProjectInfoPage::OnProjectItemDisplay )
60
104
    EVT_WIZARDEX_CANCEL( -1, CProjectInfoPage::OnCancel )
61
105
////@end CProjectInfoPage event table entries
62
106
 
78
122
 
79
123
 
80
124
/*!
 
125
 * CProjectInfoPage destructor
 
126
 */
 
127
 
 
128
CProjectInfoPage::~CProjectInfoPage( )
 
129
{
 
130
    for (std::vector<CProjectInfo*>::iterator iter = m_Projects.begin(); iter != m_Projects.end(); ++iter)
 
131
    {
 
132
        CProjectInfo* pEntry = (CProjectInfo*)*iter;
 
133
        delete pEntry;
 
134
    }
 
135
    m_Projects.clear();
 
136
}
 
137
 
 
138
 
 
139
/*!
81
140
 * CProjectInfoPage creator
82
141
 */
83
142
 
86
145
////@begin CProjectInfoPage member initialisation
87
146
    m_pTitleStaticCtrl = NULL;
88
147
    m_pDescriptionStaticCtrl = NULL;
89
 
    m_pProjectListCtrl = NULL;
90
 
    m_pProjectUrlStaticCtrl = NULL;
91
 
    m_pProjectUrlCtrl = NULL;
 
148
    m_pProjectCategoriesStaticCtrl = NULL;
 
149
    m_pProjectCategoriesCtrl = NULL;
 
150
    m_pProjectsStaticCtrl = NULL;
 
151
    m_pProjectsCtrl = NULL;
 
152
    m_pProjectDetailsStaticCtrl = NULL;
 
153
    m_pProjectDetailsDescriptionCtrl = NULL;
 
154
    m_pProjectDetailsResearchAreaStaticCtrl = NULL;
 
155
    m_pProjectDetailsResearchAreaCtrl = NULL;
 
156
    m_pProjectDetailsOrganizationStaticCtrl = NULL;
 
157
    m_pProjectDetailsOrganizationCtrl = NULL;
 
158
    m_pProjectDetailsURLStaticCtrl = NULL;
 
159
    m_pProjectDetailsURLCtrl = NULL;
 
160
    m_pProjectDetailsSupportedPlatformsStaticCtrl = NULL;
 
161
    m_pProjectDetailsSupportedPlatformWindowsCtrl = NULL;
 
162
    m_pProjectDetailsSupportedPlatformMacCtrl = NULL;
 
163
    m_pProjectDetailsSupportedPlatformLinuxCtrl = NULL;
 
164
    m_pProjectDetailsSupportedPlatformATICtrl = NULL;
 
165
    m_pProjectDetailsSupportedPlatformNvidiaCtrl = NULL;
 
166
    m_pProjectDetailsSupportedPlatformMultiCoreCtrl = NULL;
 
167
    m_pProjectDetailsSupportedPlatformBlankCtrl = NULL;
 
168
    m_pProjectURLStaticCtrl = NULL;
 
169
    m_pProjectURLCtrl = NULL;
92
170
////@end CProjectInfoPage member initialisation
93
 
    m_strProjectURL = wxEmptyString;
 
171
 
 
172
    m_Projects.clear();
94
173
    m_bProjectSupported = false;
95
174
    m_bProjectListPopulated = false;
96
175
 
112
191
void CProjectInfoPage::CreateControls()
113
192
{    
114
193
////@begin CProjectInfoPage content construction
 
194
#ifdef __WXMAC__
 
195
#define LISTBOXWIDTH 225
 
196
#define DESCRIPTIONSWIDTH 350
 
197
#else
 
198
#define LISTBOXWIDTH 150
 
199
#define DESCRIPTIONSWIDTH 200
 
200
#endif
 
201
 
115
202
    CProjectInfoPage* itemWizardPage23 = this;
116
203
 
117
204
    wxBoxSizer* itemBoxSizer24 = new wxBoxSizer(wxVERTICAL);
118
205
    itemWizardPage23->SetSizer(itemBoxSizer24);
119
206
 
120
207
    m_pTitleStaticCtrl = new wxStaticText;
121
 
    m_pTitleStaticCtrl->Create( itemWizardPage23, wxID_STATIC, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
208
    m_pTitleStaticCtrl->Create( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
122
209
    m_pTitleStaticCtrl->SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD, FALSE, _T("Verdana")));
123
210
    itemBoxSizer24->Add(m_pTitleStaticCtrl, 0, wxALIGN_LEFT|wxALL, 5);
124
211
 
125
212
    m_pDescriptionStaticCtrl = new wxStaticText;
126
 
    m_pDescriptionStaticCtrl->Create( itemWizardPage23, wxID_STATIC, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
213
    m_pDescriptionStaticCtrl->Create( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
127
214
    itemBoxSizer24->Add(m_pDescriptionStaticCtrl, 0, wxALIGN_LEFT|wxALL, 5);
128
215
 
129
 
    wxFlexGridSizer* itemFlexGridSizer3 = new wxFlexGridSizer(2, 1, 0, 0);
130
 
    itemFlexGridSizer3->AddGrowableRow(0);
131
 
    itemFlexGridSizer3->AddGrowableCol(0);
132
 
    itemBoxSizer24->Add(itemFlexGridSizer3, 1, wxGROW|wxALL, 5);
133
 
 
134
 
    m_pProjectListCtrl = new CProjectListCtrl;
135
 
    m_pProjectListCtrl->Create( itemWizardPage23 );
136
 
    itemFlexGridSizer3->Add(m_pProjectListCtrl, 0, wxGROW|wxRIGHT, 10);
137
 
 
138
 
    wxFlexGridSizer* itemFlexGridSizer11 = new wxFlexGridSizer(2, 1, 0, 0);
 
216
    itemBoxSizer24->Add(5, 5, 0, wxALIGN_LEFT|wxALL, 5);
 
217
 
 
218
    wxFlexGridSizer* itemFlexGridSizer4 = new wxFlexGridSizer(1, 1, 0, 0);
 
219
    itemFlexGridSizer4->AddGrowableRow(0);
 
220
    itemFlexGridSizer4->AddGrowableCol(0);
 
221
    itemBoxSizer24->Add(itemFlexGridSizer4, 0, wxGROW|wxALL, 0);
 
222
 
 
223
    wxFlexGridSizer* itemFlexGridSizer6 = new wxFlexGridSizer(0, 2, 0, 0);
 
224
    itemFlexGridSizer6->AddGrowableRow(1);
 
225
    itemFlexGridSizer6->AddGrowableCol(1);
 
226
    itemFlexGridSizer4->Add(itemFlexGridSizer6, 0, wxGROW|wxGROW|wxALL, 0);
 
227
 
 
228
    wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL);
 
229
    itemFlexGridSizer6->Add(itemBoxSizer7, 0, wxALIGN_LEFT|wxALIGN_TOP, 0);
 
230
 
 
231
    m_pProjectCategoriesStaticCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
232
    itemBoxSizer7->Add(m_pProjectCategoriesStaticCtrl, 0, wxALIGN_LEFT|wxRIGHT|wxBOTTOM, 5);
 
233
 
 
234
    wxArrayString m_pProjectCategoriesCtrlStrings;
 
235
    m_pProjectCategoriesCtrl = new wxComboBox( itemWizardPage23, ID_CATEGORIES, wxT(""), wxDefaultPosition, wxSize(LISTBOXWIDTH, -1), m_pProjectCategoriesCtrlStrings, wxCB_READONLY|wxCB_SORT );
 
236
    itemBoxSizer7->Add(m_pProjectCategoriesCtrl, 0, wxGROW|wxLEFT|wxRIGHT, 5);
 
237
 
 
238
    m_pProjectsStaticCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
239
    itemBoxSizer7->Add(m_pProjectsStaticCtrl, 0, wxALIGN_LEFT|wxTOP|wxRIGHT|wxBOTTOM, 5);
 
240
 
 
241
    wxFlexGridSizer* itemFlexGridSizer11 = new wxFlexGridSizer(0, 1, 0, 0);
139
242
    itemFlexGridSizer11->AddGrowableRow(0);
140
243
    itemFlexGridSizer11->AddGrowableCol(0);
141
 
    itemBoxSizer24->Add(itemFlexGridSizer11, 0, wxGROW|wxALL, 0);
142
 
 
143
 
    wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxVERTICAL);
144
 
    itemFlexGridSizer11->Add(itemBoxSizer22, 0, wxGROW|wxALL, 0);
145
 
 
146
 
    wxFlexGridSizer* itemFlexGridSizer14 = new wxFlexGridSizer(1, 2, 0, 0);
147
 
    itemFlexGridSizer14->AddGrowableCol(1);
148
 
    itemBoxSizer24->Add(itemFlexGridSizer14, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT, 10);
149
 
 
150
 
    m_pProjectUrlStaticCtrl = new wxStaticText;
151
 
    m_pProjectUrlStaticCtrl->Create( itemWizardPage23, ID_PROJECTURLSTATICCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
152
 
    itemFlexGridSizer14->Add(m_pProjectUrlStaticCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
153
 
 
154
 
    m_pProjectUrlCtrl = new wxTextCtrl;
155
 
    m_pProjectUrlCtrl->Create( itemWizardPage23, ID_PROJECTURLCTRL, wxEmptyString, wxDefaultPosition, wxSize(200, -1), 0 );
156
 
    itemFlexGridSizer14->Add(m_pProjectUrlCtrl, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
244
    itemBoxSizer7->Add(itemFlexGridSizer11, 0, wxGROW|wxALL, 0);
 
245
 
 
246
    wxArrayString m_pProjectsCtrlStrings;
 
247
    m_pProjectsCtrl = new wxListBox( itemWizardPage23, ID_PROJECTS, wxDefaultPosition, wxSize(LISTBOXWIDTH, 175), m_pProjectsCtrlStrings, wxLB_SINGLE|wxLB_SORT );
 
248
    itemFlexGridSizer11->Add(m_pProjectsCtrl, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
 
249
 
 
250
    m_pProjectDetailsStaticCtrl = new wxStaticBox(itemWizardPage23, wxID_ANY, wxT(""));
 
251
    wxStaticBoxSizer* itemStaticBoxSizer13 = new wxStaticBoxSizer(m_pProjectDetailsStaticCtrl, wxVERTICAL);
 
252
    itemFlexGridSizer6->Add(itemStaticBoxSizer13, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
253
 
 
254
    m_pProjectDetailsDescriptionCtrl = new wxHtmlWindow( itemWizardPage23, ID_PROJECTDESCRIPTION, wxDefaultPosition, wxSize(DESCRIPTIONSWIDTH, 100), wxHW_SCROLLBAR_AUTO|wxHW_NO_SELECTION );
 
255
    itemStaticBoxSizer13->Add(m_pProjectDetailsDescriptionCtrl, 0, wxGROW|wxLEFT|wxTOP|wxBOTTOM, 5);
 
256
 
 
257
    wxFlexGridSizer* itemFlexGridSizer16 = new wxFlexGridSizer(0, 2, 0, 0);
 
258
    itemFlexGridSizer16->AddGrowableCol(1);
 
259
    itemStaticBoxSizer13->Add(itemFlexGridSizer16, 0, wxGROW|wxALL, 0);
 
260
 
 
261
    m_pProjectDetailsResearchAreaStaticCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
262
    itemFlexGridSizer16->Add(m_pProjectDetailsResearchAreaStaticCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxBOTTOM, 2);
 
263
 
 
264
    m_pProjectDetailsResearchAreaCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
265
    itemFlexGridSizer16->Add(m_pProjectDetailsResearchAreaCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
 
266
 
 
267
    wxFlexGridSizer* itemFlexGridSizer19 = new wxFlexGridSizer(0, 2, 0, 0);
 
268
    itemFlexGridSizer19->AddGrowableCol(1);
 
269
    itemStaticBoxSizer13->Add(itemFlexGridSizer19, 0, wxGROW|wxALL, 0);
 
270
 
 
271
    m_pProjectDetailsOrganizationStaticCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
272
    itemFlexGridSizer19->Add(m_pProjectDetailsOrganizationStaticCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxBOTTOM, 2);
 
273
 
 
274
    m_pProjectDetailsOrganizationCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
275
    itemFlexGridSizer19->Add(m_pProjectDetailsOrganizationCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
 
276
 
 
277
    wxFlexGridSizer* itemFlexGridSizer20 = new wxFlexGridSizer(0, 2, 0, 0);
 
278
    itemFlexGridSizer20->AddGrowableCol(1);
 
279
    itemStaticBoxSizer13->Add(itemFlexGridSizer20, 0, wxGROW|wxALL, 0);
 
280
 
 
281
    m_pProjectDetailsURLStaticCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
282
    itemFlexGridSizer20->Add(m_pProjectDetailsURLStaticCtrl, 0, wxALIGN_LEFT|wxRIGHT|wxBOTTOM, 2);
 
283
 
 
284
    m_pProjectDetailsURLCtrl = new wxHyperlinkCtrl( itemWizardPage23, wxID_STATIC, wxT("BOINC"), wxT("http://boinc.berkeley.edu/"), wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxHL_CONTEXTMENU|wxHL_ALIGN_LEFT);
 
285
    itemFlexGridSizer20->Add(m_pProjectDetailsURLCtrl, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxBOTTOM, 5);
 
286
 
 
287
    wxFlexGridSizer* itemFlexGridSizer24 = new wxFlexGridSizer(2, 1, 0, 0);
 
288
    itemFlexGridSizer24->AddGrowableRow(1);
 
289
    itemFlexGridSizer24->AddGrowableCol(0);
 
290
    itemStaticBoxSizer13->Add(itemFlexGridSizer24, 0, wxGROW|wxALL, 0);
 
291
 
 
292
    m_pProjectDetailsSupportedPlatformsStaticCtrl = new wxStaticText( itemWizardPage23, wxID_STATIC, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
293
    itemFlexGridSizer24->Add(m_pProjectDetailsSupportedPlatformsStaticCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxBOTTOM, 5);
 
294
 
 
295
    wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxHORIZONTAL);
 
296
    itemFlexGridSizer24->Add(itemBoxSizer26, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
 
297
 
 
298
    m_pProjectDetailsSupportedPlatformWindowsCtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("windowsicon.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
299
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformWindowsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
300
 
 
301
    m_pProjectDetailsSupportedPlatformMacCtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("macosicon.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
302
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformMacCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
303
 
 
304
    m_pProjectDetailsSupportedPlatformLinuxCtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("linuxicon.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
305
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformLinuxCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
306
 
 
307
    m_pProjectDetailsSupportedPlatformATICtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("atiicon.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
308
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformATICtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
309
 
 
310
    m_pProjectDetailsSupportedPlatformNvidiaCtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("nvidiaicon.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
311
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformNvidiaCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
312
 
 
313
    m_pProjectDetailsSupportedPlatformMultiCoreCtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("multicore.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
314
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformMultiCoreCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
315
 
 
316
    m_pProjectDetailsSupportedPlatformBlankCtrl = new wxStaticBitmap( itemWizardPage23, wxID_STATIC, GetBitmapResource(wxT("blankicon.xpm")), wxDefaultPosition, wxSize(16,16), 0 );
 
317
    itemBoxSizer26->Add(m_pProjectDetailsSupportedPlatformBlankCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5);
 
318
 
 
319
    wxFlexGridSizer* itemFlexGridSizer33 = new wxFlexGridSizer(0, 2, 0, 0);
 
320
    itemFlexGridSizer33->AddGrowableCol(1);
 
321
    itemFlexGridSizer4->Add(itemFlexGridSizer33, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 0);
 
322
 
 
323
    m_pProjectURLStaticCtrl = new wxStaticText( itemWizardPage23, ID_PROJECTURLSTATICCTRL, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
 
324
    itemFlexGridSizer33->Add(m_pProjectURLStaticCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
325
 
 
326
    m_pProjectURLCtrl = new wxTextCtrl( itemWizardPage23, ID_PROJECTURLCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
327
    itemFlexGridSizer33->Add(m_pProjectURLCtrl, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
328
 
 
329
#ifdef __WXMAC__
 
330
    itemFlexGridSizer33->Add(0, 20, 0);
 
331
#endif
157
332
 
158
333
    // Set validators
159
 
    m_pProjectUrlCtrl->SetValidator( CValidateURL( & m_strProjectURL ) );
 
334
    m_pProjectURLCtrl->SetValidator( CValidateURL( & m_strProjectURL ) );
160
335
 
161
 
#ifdef __WXMAC__
162
 
    //Accessibility
163
 
    HIViewRef listView = (HIViewRef)m_pProjectListCtrl->GetHandle();
164
 
    HIObjectRef   theObject = (HIObjectRef)HIViewGetSuperview(listView);
165
 
    HIObjectSetAccessibilityIgnored(theObject, true);
166
 
#endif
167
336
    ////@end CProjectInfoPage content construction
168
337
}
169
338
 
207
376
 * Get bitmap resources
208
377
 */
209
378
 
210
 
wxBitmap CProjectInfoPage::GetBitmapResource( const wxString& WXUNUSED(name) )
 
379
wxBitmap CProjectInfoPage::GetBitmapResource( const wxString& name )
211
380
{
212
381
    // Bitmap retrieval
213
382
////@begin CProjectInfoPage bitmap retrieval
 
383
    wxUnusedVar(name);
 
384
    if (name == wxT("windowsicon.xpm"))
 
385
    {
 
386
        wxBitmap bitmap(Win32_xpm);
 
387
        return bitmap;
 
388
    }
 
389
    else if (name == wxT("macosicon.xpm"))
 
390
    {
 
391
        wxBitmap bitmap(MacOS_xpm);
 
392
        return bitmap;
 
393
    }
 
394
    else if (name == wxT("linuxicon.xpm"))
 
395
    {
 
396
        wxBitmap bitmap(Linux_xpm);
 
397
        return bitmap;
 
398
    }
 
399
    else if (name == wxT("atiicon.xpm"))
 
400
    {
 
401
        wxBitmap bitmap(atiicon_xpm);
 
402
        return bitmap;
 
403
    }
 
404
    else if (name == wxT("nvidiaicon.xpm"))
 
405
    {
 
406
        wxBitmap bitmap(nvidiaicon_xpm);
 
407
        return bitmap;
 
408
    }
 
409
    else if (name == wxT("multicore.xpm"))
 
410
    {
 
411
        wxBitmap bitmap(multicore_xpm);
 
412
        return bitmap;
 
413
    }
 
414
    else if (name == wxT("blankicon.xpm"))
 
415
    {
 
416
        wxBitmap bitmap(blankicon_xpm);
 
417
        return bitmap;
 
418
    }
214
419
    return wxNullBitmap;
215
420
////@end CProjectInfoPage bitmap retrieval
216
421
}
229
434
}
230
435
 
231
436
 
 
437
/*
 
438
 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_CATEGORIES
 
439
 */
 
440
 
 
441
void CProjectInfoPage::OnProjectCategorySelected( wxCommandEvent& WXUNUSED(event) ) {
 
442
    wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnProjectCategorySelected - Function Begin"));
 
443
 
 
444
    wxLogTrace(wxT("Function Status"), wxT("CProjectInfoPage::OnProjectCategorySelected - Clearing list box"));
 
445
    m_pProjectsCtrl->Clear();
 
446
 
 
447
    // Populate the list box with the list of project names that belong to eith the specific
 
448
    // category or all of them.
 
449
    wxLogTrace(wxT("Function Status"), wxT("CProjectInfoPage::OnProjectCategorySelected - Adding desired projects"));
 
450
    for (unsigned int i=0; i<m_Projects.size(); i++) {
 
451
        if ((m_pProjectCategoriesCtrl->GetValue() == _("All")) || 
 
452
            (m_pProjectCategoriesCtrl->GetValue() == m_Projects[i]->m_strGeneralArea)
 
453
        ) {
 
454
            wxLogTrace(
 
455
                wxT("Function Status"), 
 
456
                wxT("CProjectInfoPage::OnProjectCategorySelected - Adding '%s'"),
 
457
                m_Projects[i]->m_strName.c_str()
 
458
            );
 
459
            m_pProjectsCtrl->Append(m_Projects[i]->m_strName, m_Projects[i]);
 
460
        }
 
461
    }
 
462
 
 
463
    // Set the first item to be the selected item and then pop the next event.
 
464
    m_pProjectsCtrl->SetSelection(0);
 
465
    wxCommandEvent evtEvent(wxEVT_COMMAND_LISTBOX_SELECTED, ID_PROJECTS);
 
466
    ProcessEvent(evtEvent);
 
467
 
 
468
    wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnProjectCategorySelected - Function End"));
 
469
}
 
470
 
 
471
 
 
472
/*
 
473
 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_PROJECTS
 
474
 */
 
475
 
 
476
void CProjectInfoPage::OnProjectSelected( wxCommandEvent& WXUNUSED(event) ) {
 
477
    wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnProjectSelected - Function Begin"));
 
478
 
 
479
    CProjectInfo* pProjectInfo = (CProjectInfo*)m_pProjectsCtrl->GetClientData(m_pProjectsCtrl->GetSelection());
 
480
 
 
481
    wxString strURL = pProjectInfo->m_strURL;
 
482
    EllipseStringIfNeeded(strURL, m_pProjectDetailsURLCtrl);
 
483
 
 
484
    // Populate the project details area
 
485
#ifdef _WIN32
 
486
    wxString desc = wxT("<font size=-1>") + pProjectInfo->m_strDescription + wxT("</font>");
 
487
#else
 
488
    wxString desc = pProjectInfo->m_strDescription;
 
489
#endif
 
490
    m_pProjectDetailsDescriptionCtrl->SetPage(desc);
 
491
    m_pProjectDetailsURLCtrl->SetLabel(strURL);
 
492
    m_pProjectDetailsURLCtrl->SetURL(pProjectInfo->m_strURL);
 
493
    // Set tooltip to full text in case ellipsed
 
494
    m_pProjectDetailsURLCtrl->SetToolTip(pProjectInfo->m_strURL);
 
495
 
 
496
    m_pProjectDetailsSupportedPlatformWindowsCtrl->Hide();
 
497
    m_pProjectDetailsSupportedPlatformMacCtrl->Hide();
 
498
    m_pProjectDetailsSupportedPlatformLinuxCtrl->Hide();
 
499
    m_pProjectDetailsSupportedPlatformATICtrl->Hide();
 
500
    m_pProjectDetailsSupportedPlatformNvidiaCtrl->Hide();
 
501
    m_pProjectDetailsSupportedPlatformMultiCoreCtrl->Hide();
 
502
    if (pProjectInfo->m_bProjectSupportsWindows) m_pProjectDetailsSupportedPlatformWindowsCtrl->Show();
 
503
    if (pProjectInfo->m_bProjectSupportsMac) m_pProjectDetailsSupportedPlatformMacCtrl->Show();
 
504
    if (pProjectInfo->m_bProjectSupportsLinux) m_pProjectDetailsSupportedPlatformLinuxCtrl->Show();
 
505
    if (pProjectInfo->m_bProjectSupportsCAL) m_pProjectDetailsSupportedPlatformATICtrl->Show();
 
506
    if (pProjectInfo->m_bProjectSupportsCUDA) m_pProjectDetailsSupportedPlatformNvidiaCtrl->Show();
 
507
    if (pProjectInfo->m_bProjectSupportsMulticore) m_pProjectDetailsSupportedPlatformMultiCoreCtrl->Show();
 
508
 
 
509
    // Populate non-control data for use in other places of the wizard
 
510
    SetProjectURL( pProjectInfo->m_strURL );
 
511
    SetProjectSupported( pProjectInfo->m_bSupportedPlatformFound );
 
512
 
 
513
    TransferDataToWindow();
 
514
    Layout();
 
515
 
 
516
    wxString strResearchArea = pProjectInfo->m_strSpecificArea;
 
517
    EllipseStringIfNeeded(strResearchArea, m_pProjectDetailsResearchAreaCtrl);
 
518
    m_pProjectDetailsResearchAreaCtrl->SetLabel(strResearchArea);
 
519
    // Set tooltip to full text in case ellipsed
 
520
    m_pProjectDetailsResearchAreaCtrl->SetToolTip(pProjectInfo->m_strSpecificArea);
 
521
 
 
522
    wxString strOrganization = pProjectInfo->m_strOrganization;
 
523
    EllipseStringIfNeeded(strOrganization, m_pProjectDetailsOrganizationCtrl);
 
524
    m_pProjectDetailsOrganizationCtrl->SetLabel(strOrganization);
 
525
    // Set tooltip to full text in case ellipsed
 
526
    m_pProjectDetailsOrganizationCtrl->SetToolTip(pProjectInfo->m_strOrganization);
 
527
 
 
528
    wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnProjectSelected - Function End"));
 
529
}
 
530
 
 
531
 
232
532
/*!
233
533
 * wxEVT_WIZARD_PAGE_CHANGED event handler for ID_PROJECTINFOPAGE
234
534
 */
237
537
    if (event.GetDirection() == false) return;
238
538
    wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnPageChanged - Function Begin"));
239
539
 
240
 
    unsigned int                i, j, k;
241
 
    bool                        bSupportedPlatformFound = false;
242
 
    bool                        bProjectSupportsNvidiaGPU = false;
243
 
    bool                        bProjectSupportsATIGPU = false;
244
 
    bool                        bProjectSupportsMulticore = false;
 
540
    CMainDocument*              pDoc = wxGetApp().GetDocument();
 
541
    unsigned int                i = 0, j = 0, k = 0;
245
542
    ALL_PROJECTS_LIST           pl;
246
 
    CMainDocument*              pDoc = wxGetApp().GetDocument();
 
543
    wxArrayString               aClientPlatforms;
 
544
    wxArrayString               aProjectPlatforms;
 
545
    wxArrayString               aCategories;
 
546
    bool                        bCategoryFound = false;
 
547
    CProjectInfo*               pProjectInfo = NULL;
247
548
 
248
549
    wxASSERT(pDoc);
249
550
    wxASSERT(wxDynamicCast(pDoc, CMainDocument));
250
551
    wxASSERT(m_pTitleStaticCtrl);
251
552
    wxASSERT(m_pDescriptionStaticCtrl);
252
 
    wxASSERT(m_pProjectListCtrl);
253
 
    wxASSERT(m_pProjectUrlStaticCtrl);
254
 
    wxASSERT(m_pProjectUrlCtrl);
 
553
    wxASSERT(m_pProjectCategoriesStaticCtrl);
 
554
    wxASSERT(m_pProjectCategoriesCtrl);
 
555
    wxASSERT(m_pProjectsStaticCtrl);
 
556
    wxASSERT(m_pProjectsCtrl);
 
557
    wxASSERT(m_pProjectDetailsStaticCtrl);
 
558
    wxASSERT(m_pProjectDetailsDescriptionCtrl);
 
559
    wxASSERT(m_pProjectDetailsResearchAreaStaticCtrl);
 
560
    wxASSERT(m_pProjectDetailsResearchAreaCtrl);
 
561
    wxASSERT(m_pProjectDetailsOrganizationStaticCtrl);
 
562
    wxASSERT(m_pProjectDetailsOrganizationStaticCtrl);
 
563
    wxASSERT(m_pProjectDetailsURLStaticCtrl);
 
564
    wxASSERT(m_pProjectDetailsURLCtrl);
 
565
    wxASSERT(m_pProjectDetailsSupportedPlatformsStaticCtrl);
 
566
    wxASSERT(m_pProjectDetailsSupportedPlatformWindowsCtrl);
 
567
    wxASSERT(m_pProjectDetailsSupportedPlatformMacCtrl);
 
568
    wxASSERT(m_pProjectDetailsSupportedPlatformLinuxCtrl);
 
569
    wxASSERT(m_pProjectDetailsSupportedPlatformATICtrl);
 
570
    wxASSERT(m_pProjectDetailsSupportedPlatformNvidiaCtrl);
 
571
    wxASSERT(m_pProjectDetailsSupportedPlatformMultiCoreCtrl);
 
572
    wxASSERT(m_pProjectURLStaticCtrl);
 
573
    wxASSERT(m_pProjectURLCtrl);
255
574
 
256
575
    m_pTitleStaticCtrl->SetLabel(
257
576
        _("Choose a project")
258
577
    );
 
578
 
259
579
    m_pDescriptionStaticCtrl->SetLabel(
260
580
        _("To choose a project, click its name or type its URL below.")
261
581
    );
262
 
    m_pProjectUrlStaticCtrl->SetLabel(
263
 
        _("Project &URL:")
264
 
    );
265
 
 
266
 
 
267
 
    // Populate the virtual list control with project information
268
 
    //
 
582
 
 
583
    m_pProjectCategoriesStaticCtrl->SetLabel(
 
584
        _("Categories:")
 
585
    );
 
586
 
 
587
    m_pProjectsStaticCtrl->SetLabel(
 
588
        _("Projects:")
 
589
    );
 
590
 
 
591
    m_pProjectDetailsStaticCtrl->SetLabel(
 
592
        _("Project details")
 
593
    );
 
594
 
 
595
    m_pProjectDetailsResearchAreaStaticCtrl->SetLabel(
 
596
        _("Research area:")
 
597
    );
 
598
 
 
599
    m_pProjectDetailsOrganizationStaticCtrl->SetLabel(
 
600
        _("Organization:")
 
601
    );
 
602
 
 
603
    m_pProjectDetailsURLStaticCtrl->SetLabel(
 
604
        _("Web site:")
 
605
    );
 
606
 
 
607
    m_pProjectDetailsSupportedPlatformsStaticCtrl->SetLabel(
 
608
        _("Supported systems:")
 
609
    );
 
610
 
 
611
    m_pProjectURLStaticCtrl->SetLabel(
 
612
        _("Project URL:")
 
613
    );
 
614
 
 
615
 
 
616
    // Populate the ProjectInfo data structure with the list of projects we want to show and
 
617
    // any other activity we need to prep the page.
269
618
    if (!m_bProjectListPopulated) {
270
 
        std::vector<std::string> &client_platforms = pDoc->state.platforms;
 
619
 
 
620
        // Get the project list
271
621
        pDoc->rpc.get_all_projects_list(pl);
272
622
 
 
623
        // Convert the supported client platforms into something useful
 
624
        for (i=0; i<pDoc->state.platforms.size(); i++) {
 
625
            aClientPlatforms.Add(wxString(pDoc->state.platforms[i].c_str(), wxConvUTF8));
 
626
        }
 
627
 
 
628
        // Iterate through the project list and add them to the ProjectInfo data structure
273
629
        for (i=0; i<pl.projects.size(); i++) {
274
 
            bSupportedPlatformFound = false;
275
 
            bProjectSupportsNvidiaGPU = false;
276
 
            bProjectSupportsATIGPU = false;
277
 
            bProjectSupportsMulticore = false;
 
630
            pProjectInfo = new CProjectInfo();
 
631
            m_Projects.push_back(pProjectInfo);
278
632
 
279
633
            wxLogTrace(
280
634
                wxT("Function Status"),
283
637
                wxString(pl.projects[i]->url.c_str(), wxConvUTF8).c_str()
284
638
            );
285
639
 
286
 
            std::vector<std::string> &project_platforms = pl.projects[i]->platforms;
287
 
 
288
 
            // Can the core client support a platform that this project
289
 
            //   supports?
290
 
            for (j = 0;j < client_platforms.size(); j++) {
291
 
                for (k = 0;k < project_platforms.size(); k++) {
292
 
                    wxString strClientPlatform = wxString(client_platforms[j].c_str(), wxConvUTF8);
293
 
                    wxString strProjectPlatform = wxString(project_platforms[k].c_str(), wxConvUTF8);
 
640
            // Convert the easy stuff
 
641
            pProjectInfo->m_strURL = wxString(pl.projects[i]->url.c_str(), wxConvUTF8);
 
642
            pProjectInfo->m_strName = wxString(pl.projects[i]->name.c_str(), wxConvUTF8);
 
643
            pProjectInfo->m_strDescription = wxString(pl.projects[i]->description.c_str(), wxConvUTF8);
 
644
            pProjectInfo->m_strGeneralArea = wxString(pl.projects[i]->general_area.c_str(), wxConvUTF8);
 
645
            pProjectInfo->m_strSpecificArea = wxString(pl.projects[i]->specific_area.c_str(), wxConvUTF8);
 
646
            pProjectInfo->m_strOrganization = wxString(pl.projects[i]->home.c_str(), wxConvUTF8);
 
647
            
 
648
            // Add the category if it isn't already in the category list
 
649
            bCategoryFound = false;
 
650
            for (j=0; j<aCategories.size(); j++) {
 
651
                if (aCategories[j] == pProjectInfo->m_strGeneralArea) {
 
652
                    bCategoryFound = true;
 
653
                }
 
654
            }
 
655
            if (!bCategoryFound) {
 
656
                aCategories.Add(pProjectInfo->m_strGeneralArea);
 
657
            }
 
658
 
 
659
            // Convert the supported project platforms into something useful
 
660
            aProjectPlatforms.Clear();
 
661
            for (j=0; j<pl.projects[i]->platforms.size(); j++) {
 
662
                aProjectPlatforms.Add(wxString(pl.projects[i]->platforms[j].c_str(), wxConvUTF8));
 
663
            }
 
664
 
 
665
            // Can the core client support a platform that this project supports?
 
666
            //
 
667
            // NOTE: if the platform entry contains a modifier such as [cuda] or [ati], 
 
668
            // that capability is required.  If a project offers both a cuda application 
 
669
            // and a CPU-only application for an operating system, it must have two 
 
670
            // separate platform entries for that OS, one with [cuda] and one without.
 
671
            // Likewise for ati and mt.
 
672
            //
 
673
            for (j = 0;j < aClientPlatforms.size(); j++) {
 
674
                wxString strClientPlatform = aClientPlatforms[j];
 
675
                for (k = 0;k < aProjectPlatforms.size(); k++) {
 
676
                    wxString strProjectPlatform = aProjectPlatforms[k];
294
677
                    wxString strRootProjectPlatform = strProjectPlatform.SubString(0, strProjectPlatform.Find(_T("[")) - 1);
295
678
                    
 
679
                    if (strProjectPlatform.Find(_T("windows")) != wxNOT_FOUND) {
 
680
                        pProjectInfo->m_bProjectSupportsWindows = true;
 
681
                    }
 
682
 
 
683
                    if (strProjectPlatform.Find(_T("apple")) != wxNOT_FOUND) {
 
684
                        pProjectInfo->m_bProjectSupportsMac = true;
 
685
                    }
 
686
                    
 
687
                    if (strProjectPlatform.Find(_T("linux")) != wxNOT_FOUND) {
 
688
                        pProjectInfo->m_bProjectSupportsLinux = true;
 
689
                    }
 
690
                    
296
691
                    if (strProjectPlatform.Find(_T("[cuda")) != wxNOT_FOUND) {
297
 
                        if ((pDoc->state.have_cuda) && (strClientPlatform == strRootProjectPlatform)) {
298
 
                            bProjectSupportsNvidiaGPU = true;
299
 
                            bSupportedPlatformFound = true;
300
 
                        }
 
692
                        pProjectInfo->m_bProjectSupportsCUDA = true;
 
693
                                                if (!pDoc->state.have_nvidia) continue;
301
694
                    }
302
695
 
303
696
                    if (strProjectPlatform.Find(_T("[ati")) != wxNOT_FOUND) {
304
 
                        if ((pDoc->state.have_ati) && (strClientPlatform == strRootProjectPlatform)) {
305
 
                            bProjectSupportsATIGPU = true;
306
 
                            bSupportedPlatformFound = true;
307
 
                        }
 
697
                        pProjectInfo->m_bProjectSupportsCAL = true;
 
698
                                                if (!pDoc->state.have_ati) continue;
308
699
                    }
309
700
 
310
701
                    if (strProjectPlatform.Find(_T("[mt")) != wxNOT_FOUND) {
311
 
                        if ((pDoc->host.p_ncpus >= 4) && (strClientPlatform == strRootProjectPlatform)) {
312
 
                            bProjectSupportsMulticore = true;
313
 
                            bSupportedPlatformFound = true;
314
 
                        }
 
702
                        pProjectInfo->m_bProjectSupportsMulticore = true;
 
703
                                                if (pDoc->state.host_info.p_ncpus < 4) continue;
315
704
                    }
316
 
 
 
705
                    
317
706
                    if (strClientPlatform == strRootProjectPlatform) {
318
 
                        bSupportedPlatformFound = true;
 
707
                        pProjectInfo->m_bSupportedPlatformFound = true;
319
708
                    }
320
709
                }
321
710
            }
322
711
 
 
712
                        // If project doesn't export its platforms, assume we're supported
 
713
                        //
 
714
                        if (aProjectPlatforms.size() == 0) {
 
715
                                pProjectInfo->m_bSupportedPlatformFound = true;
 
716
                        }
 
717
 
323
718
            wxLogTrace(
324
719
                wxT("Function Status"),
325
 
                wxT("CProjectInfoPage::OnPageChanged - Nvidia: '%d', ATI: '%d', Multicore: '%d', Platform: '%d'"),
326
 
                bProjectSupportsNvidiaGPU,
327
 
                bProjectSupportsATIGPU,
328
 
                bProjectSupportsMulticore,
329
 
                bSupportedPlatformFound
330
 
            );
331
 
 
332
 
            m_pProjectListCtrl->Append(
333
 
                wxString(pl.projects[i]->url.c_str(), wxConvUTF8),
334
 
                wxString(pl.projects[i]->name.c_str(), wxConvUTF8),
335
 
                wxString(pl.projects[i]->image.c_str(), wxConvUTF8),
336
 
                wxString(pl.projects[i]->description.c_str(), wxConvUTF8),
337
 
                bProjectSupportsNvidiaGPU,
338
 
                bProjectSupportsATIGPU,
339
 
                bProjectSupportsMulticore,
340
 
                bSupportedPlatformFound
341
 
            );
342
 
        }
343
 
 
344
 
        // Pre select the first element
345
 
        if (m_pProjectListCtrl->GetItemCount()) {
346
 
            m_pProjectListCtrl->SetSelection(0);
347
 
            m_strProjectURL = m_pProjectListCtrl->GetItem(0)->GetURL();
348
 
            m_bProjectSupported = m_pProjectListCtrl->GetItem(0)->IsPlatformSupported();
349
 
        }
350
 
 
351
 
        TransferDataToWindow();
 
720
                wxT("CProjectInfoPage::OnPageChanged - Windows: '%d', Mac: '%d', Linux: '%d', Nvidia: '%d', ATI: '%d', Multicore: '%d', Platform: '%d'"),
 
721
                pProjectInfo->m_bProjectSupportsWindows,
 
722
                pProjectInfo->m_bProjectSupportsMac,
 
723
                pProjectInfo->m_bProjectSupportsLinux,
 
724
                pProjectInfo->m_bProjectSupportsCUDA,
 
725
                pProjectInfo->m_bProjectSupportsCAL,
 
726
                pProjectInfo->m_bProjectSupportsMulticore,
 
727
                pProjectInfo->m_bSupportedPlatformFound
 
728
            );
 
729
        }
 
730
 
 
731
 
 
732
        // Populate the category combo box
 
733
        m_pProjectCategoriesCtrl->Clear();
 
734
        m_pProjectCategoriesCtrl->Append(_("All"));
 
735
        for (i=0; i<aCategories.size(); i++) {
 
736
            m_pProjectCategoriesCtrl->Append(aCategories[i]);
 
737
        }
 
738
        m_pProjectCategoriesCtrl->SetValue(_("All"));
 
739
 
 
740
        // Trigger initial event to populate the list control
 
741
        wxCommandEvent evtEvent(wxEVT_COMMAND_COMBOBOX_SELECTED, ID_CATEGORIES);
 
742
        ProcessEvent(evtEvent);
352
743
 
353
744
        m_bProjectListPopulated = true;
354
745
    }
355
746
 
356
 
    Layout();
357
 
    FitInside();
358
 
    m_pProjectListCtrl->SetFocus();
 
747
    m_pProjectsCtrl->SetFocus();
359
748
 
360
749
    wxLogTrace(wxT("Function Start/End"), wxT("CProjectInfoPage::OnPageChanged - Function End"));
361
750
}
432
821
 
433
822
 
434
823
/*!
435
 
 * wxEVT_PROJECTLIST_ITEM_CHANGE event handler for ID_PROJECTSELECTIONCTRL
436
 
 */
437
 
 
438
 
void CProjectInfoPage::OnProjectItemChange( ProjectListCtrlEvent& event ) {
439
 
    SetProjectURL( event.GetURL() );
440
 
    SetProjectSupported( event.IsSupported() );
441
 
    TransferDataToWindow();
442
 
}
443
 
 
444
 
 
445
 
/*!
446
 
 * wxEVT_PROJECTLIST_ITEM_DISPLAY event handler for ID_PROJECTSELECTIONCTRL
447
 
 */
448
 
 
449
 
void CProjectInfoPage::OnProjectItemDisplay( ProjectListCtrlEvent& event ) {
450
 
    wxLaunchDefaultBrowser( event.GetURL() );
451
 
}
452
 
 
453
 
 
454
 
/*!
455
824
 * wxEVT_WIZARD_CANCEL event handler for ID_PROJECTINFOPAGE
456
825
 */
457
826
 
459
828
    PROCESS_CANCELEVENT(event);
460
829
}
461
830
 
 
831
 
 
832
void CProjectInfoPage::EllipseStringIfNeeded(wxString& s, wxWindow *win) {
 
833
    int x, y;
 
834
    int w, h;
 
835
    wxSize sz = win->GetParent()->GetSize();
 
836
    win->GetPosition(&x, &y);
 
837
    int maxWidth = sz.GetWidth() - x - 10;
 
838
    
 
839
    win->GetTextExtent(s, &w, &h);
 
840
    
 
841
    // Adapted from ellipis code in wxRendererGeneric::DrawHeaderButtonContents()
 
842
    if (w > maxWidth) {
 
843
        int ellipsisWidth;
 
844
        win->GetTextExtent( wxT("..."), &ellipsisWidth, NULL);
 
845
        if (ellipsisWidth > maxWidth) {
 
846
            s.Clear();
 
847
            w = 0;
 
848
        } else {
 
849
            do {
 
850
                s.Truncate( s.length() - 1 );
 
851
                win->GetTextExtent( s, &w, &h);
 
852
            } while (((w + ellipsisWidth) > maxWidth) && s.length() );
 
853
            s.append( wxT("...") );
 
854
            w += ellipsisWidth;
 
855
        }
 
856
    }
 
857
}