~efargaspro/+junk/codeblocks-16.01-release

« back to all changes in this revision

Viewing changes to src/plugins/contrib/lib_finder/defsdownloaddlg.cpp

  • Committer: damienlmoore at gmail
  • Date: 2016-02-02 02:43:22 UTC
  • Revision ID: damienlmoore@gmail.com-20160202024322-yql5qmtbwdyamdwd
Code::BlocksĀ 16.01

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <memory>
 
2
#include "defsdownloaddlg.h"
 
3
 
 
4
//(*InternalHeaders(DefsDownloadDlg)
 
5
#include <wx/checkbox.h>
 
6
#include <wx/sizer.h>
 
7
#include <wx/button.h>
 
8
#include <wx/string.h>
 
9
#include <wx/intl.h>
 
10
#include <wx/stattext.h>
 
11
#include <wx/textctrl.h>
 
12
#include <wx/treectrl.h>
 
13
#include <wx/listbox.h>
 
14
//*)
 
15
#include <wx/mstream.h>
 
16
#include <wx/url.h>
 
17
#include <manager.h>
 
18
#include <configmanager.h>
 
19
#include <logmanager.h>
 
20
 
 
21
//(*IdInit(DefsDownloadDlg)
 
22
const long DefsDownloadDlg::ID_LISTBOX1 = wxNewId();
 
23
const long DefsDownloadDlg::ID_BUTTON1 = wxNewId();
 
24
const long DefsDownloadDlg::ID_BUTTON2 = wxNewId();
 
25
const long DefsDownloadDlg::ID_TREECTRL1 = wxNewId();
 
26
const long DefsDownloadDlg::ID_STATICTEXT1 = wxNewId();
 
27
const long DefsDownloadDlg::ID_TEXTCTRL2 = wxNewId();
 
28
const long DefsDownloadDlg::ID_CHECKBOX1 = wxNewId();
 
29
const long DefsDownloadDlg::ID_BUTTON3 = wxNewId();
 
30
//*)
 
31
 
 
32
BEGIN_EVENT_TABLE(DefsDownloadDlg,wxScrollingDialog)
 
33
        //(*EventTable(DefsDownloadDlg)
 
34
        //*)
 
35
END_EVENT_TABLE()
 
36
 
 
37
DefsDownloadDlg::DefsDownloadDlg(wxWindow* parent)
 
38
{
 
39
        //(*Initialize(DefsDownloadDlg)
 
40
        wxStaticBoxSizer* StaticBoxSizer2;
 
41
        wxBoxSizer* BoxSizer3;
 
42
        wxBoxSizer* BoxSizer7;
 
43
        wxBoxSizer* BoxSizer2;
 
44
        wxStaticBoxSizer* StaticBoxSizer3;
 
45
        wxBoxSizer* BoxSizer4;
 
46
        wxBoxSizer* BoxSizer1;
 
47
        wxBoxSizer* BoxSizer6;
 
48
        wxBoxSizer* BoxSizer5;
 
49
        wxStaticBoxSizer* StaticBoxSizer1;
 
50
 
 
51
        Create(parent, wxID_ANY, _("Download libraries definitions"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER, _T("wxID_ANY"));
 
52
        BoxSizer1 = new wxBoxSizer(wxVERTICAL);
 
53
        BoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
 
54
        BoxSizer5 = new wxBoxSizer(wxVERTICAL);
 
55
        StaticBoxSizer1 = new wxStaticBoxSizer(wxVERTICAL, this, _("Download list"));
 
56
        m_UsedLibraries = new wxListBox(this, ID_LISTBOX1, wxDefaultPosition, wxSize(156,290), 0, 0, 0, wxDefaultValidator, _T("ID_LISTBOX1"));
 
57
        StaticBoxSizer1->Add(m_UsedLibraries, 1, wxALL|wxEXPAND, 5);
 
58
        BoxSizer5->Add(StaticBoxSizer1, 1, wxALL|wxEXPAND, 5);
 
59
        BoxSizer6->Add(BoxSizer5, 3, wxEXPAND, 5);
 
60
        BoxSizer2 = new wxBoxSizer(wxVERTICAL);
 
61
        m_Add = new wxButton(this, ID_BUTTON1, _("<"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_BUTTON1"));
 
62
        m_Add->Disable();
 
63
        m_Add->SetToolTip(_("Add selected library to project"));
 
64
        BoxSizer2->Add(m_Add, 1, wxEXPAND, 5);
 
65
        m_Remove = new wxButton(this, ID_BUTTON2, _(">"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_BUTTON2"));
 
66
        m_Remove->Disable();
 
67
        m_Remove->SetToolTip(_("Remove selected library from project"));
 
68
        BoxSizer2->Add(m_Remove, 1, wxEXPAND, 5);
 
69
        BoxSizer6->Add(BoxSizer2, 0, wxALIGN_CENTER_VERTICAL, 5);
 
70
        BoxSizer3 = new wxBoxSizer(wxVERTICAL);
 
71
        StaticBoxSizer2 = new wxStaticBoxSizer(wxVERTICAL, this, _("Known libraries"));
 
72
        m_KnownLibrariesTree = new wxTreeCtrl(this, ID_TREECTRL1, wxDefaultPosition, wxDefaultSize, wxTR_HIDE_ROOT|wxTR_SINGLE|wxTR_DEFAULT_STYLE|wxSUNKEN_BORDER, wxDefaultValidator, _T("ID_TREECTRL1"));
 
73
        StaticBoxSizer2->Add(m_KnownLibrariesTree, 1, wxALL|wxEXPAND, 5);
 
74
        BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
 
75
        StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("Filter:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
 
76
        BoxSizer4->Add(StaticText1, 0, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_CENTER_VERTICAL, 5);
 
77
        m_Filter = new wxTextCtrl(this, ID_TEXTCTRL2, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL2"));
 
78
        BoxSizer4->Add(m_Filter, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
 
79
        StaticBoxSizer2->Add(BoxSizer4, 0, wxEXPAND, 5);
 
80
        BoxSizer7 = new wxBoxSizer(wxHORIZONTAL);
 
81
        m_Tree = new wxCheckBox(this, ID_CHECKBOX1, _("Show as tree"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
 
82
        m_Tree->SetValue(true);
 
83
        BoxSizer7->Add(m_Tree, 1, wxLEFT|wxRIGHT|wxEXPAND, 5);
 
84
        StaticBoxSizer2->Add(BoxSizer7, 0, wxBOTTOM|wxEXPAND, 5);
 
85
        BoxSizer3->Add(StaticBoxSizer2, 1, wxBOTTOM|wxEXPAND, 5);
 
86
        StaticBoxSizer3 = new wxStaticBoxSizer(wxVERTICAL, this, _("Configuration"));
 
87
        Button1 = new wxButton(this, ID_BUTTON3, _("Servers"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
 
88
        StaticBoxSizer3->Add(Button1, 0, wxALL|wxEXPAND, 5);
 
89
        BoxSizer3->Add(StaticBoxSizer3, 0, wxEXPAND, 5);
 
90
        BoxSizer6->Add(BoxSizer3, 4, wxALL|wxEXPAND, 5);
 
91
        BoxSizer1->Add(BoxSizer6, 1, wxALIGN_CENTER_HORIZONTAL, 5);
 
92
        SetSizer(BoxSizer1);
 
93
        BoxSizer1->Fit(this);
 
94
        BoxSizer1->SetSizeHints(this);
 
95
        //*)
 
96
 
 
97
        FetchList();
 
98
}
 
99
 
 
100
DefsDownloadDlg::~DefsDownloadDlg()
 
101
{
 
102
        //(*Destroy(DefsDownloadDlg)
 
103
        //*)
 
104
}
 
105
 
 
106
void DefsDownloadDlg::FetchList()
 
107
{
 
108
    wxArrayString Urls = Manager::Get()->GetConfigManager(_T("lib_finder"))->ReadArrayString(_T("download_urls"));
 
109
    Urls.Add(_T("http://localhost/lib_finder_test"));
 
110
 
 
111
    for ( size_t i=0; i<Urls.Count(); i++ )
 
112
    {
 
113
        wxString Url = Urls[i];
 
114
        if ( Url.IsEmpty() ) continue;
 
115
 
 
116
        if ( Url.Last() != _T('/') ) Url.Append(_T('/'));
 
117
        Url << _T("list") << _T(".xml");
 
118
 
 
119
        wxURL UrlData(Url);
 
120
        if ( !UrlData.IsOk() )
 
121
        {
 
122
            LogManager::Get()->LogWarning(F(_T("lib_finder: Invalid url '%s'"),Url.wx_str()));
 
123
            continue;
 
124
        }
 
125
        UrlData.SetProxy( ConfigManager::GetProxy() );
 
126
 
 
127
        std::auto_ptr< wxInputStream > is ( UrlData.GetInputStream() );
 
128
        if ( !is.get() || !is->IsOk() )
 
129
        {
 
130
            LogManager::Get()->LogWarning(F(_T("lib_finder: Couldn't open stream for '%s'"),Url.wx_str()));
 
131
            continue;
 
132
        }
 
133
 
 
134
        wxMemoryOutputStream memory;
 
135
        is->Read( memory );
 
136
 
 
137
        // Don't need input stream anymore
 
138
        is.reset();
 
139
 
 
140
        // Add padding zero to have valid ASCII-z string
 
141
        memory.PutC(0);
 
142
 
 
143
        // Parse XML data
 
144
        TiXmlDocument doc;
 
145
        if ( !doc.Parse( (const char*) memory.GetOutputStreamBuffer()->GetBufferStart() ) )
 
146
        {
 
147
            LogManager::Get()->LogWarning(F(_T("lib_finder: Invalid XML data in '%s'"),Url.wx_str()));
 
148
            continue;
 
149
        }
 
150
 
 
151
 
 
152
    }
 
153
}