]>
Commit | Line | Data |
---|---|---|
1 | ///////////////////////////////////////////////////////////////////////////// | |
2 | // Name: artbrows.cpp | |
3 | // Purpose: wxArtProvider demo - art browser dialog | |
4 | // Author: Vaclav Slavik | |
5 | // Modified by: | |
6 | // Created: 2002/04/05 | |
7 | // RCS-ID: $Id$ | |
8 | // Copyright: (c) Vaclav Slavik | |
9 | // Licence: wxWindows license | |
10 | ///////////////////////////////////////////////////////////////////////////// | |
11 | ||
12 | #ifdef __GNUG__ | |
13 | #pragma implementation "artbrows.h" | |
14 | #endif | |
15 | ||
16 | // For compilers that support precompilation, includes "wx/wx.h". | |
17 | #include "wx/wxprec.h" | |
18 | ||
19 | #ifdef __BORLANDC__ | |
20 | #pragma hdrstop | |
21 | #endif | |
22 | ||
23 | #ifndef WX_PRECOMP | |
24 | #include "wx/wx.h" | |
25 | #include "wx/choice.h" | |
26 | #endif | |
27 | ||
28 | #include "wx/listctrl.h" | |
29 | #include "wx/sizer.h" | |
30 | #include "wx/imaglist.h" | |
31 | #include "wx/listctrl.h" | |
32 | ||
33 | #include "artbrows.h" | |
34 | ||
35 | #define ART_CLIENT(id) \ | |
36 | choice->Append(_T(#id), (void*)id); | |
37 | #define ART_ICON(id) \ | |
38 | { \ | |
39 | int ind; \ | |
40 | wxIcon icon = wxArtProvider::GetIcon(id, client, size); \ | |
41 | if ( icon.Ok() ) \ | |
42 | ind = images->Add(icon); \ | |
43 | else \ | |
44 | ind = 0; \ | |
45 | list->InsertItem(index, _T(#id), ind); \ | |
46 | list->SetItemData(index, (long)id); \ | |
47 | index++; \ | |
48 | } | |
49 | ||
50 | // ---------------------------------------------------------------------------- | |
51 | // Functions to fill-in all supported art IDs | |
52 | // ---------------------------------------------------------------------------- | |
53 | ||
54 | static void FillClients(wxChoice *choice) | |
55 | { | |
56 | ART_CLIENT(wxART_OTHER) | |
57 | ART_CLIENT(wxART_TOOLBAR) | |
58 | ART_CLIENT(wxART_MENU) | |
59 | ART_CLIENT(wxART_FRAME_ICON) | |
60 | ART_CLIENT(wxART_CMN_DIALOG) | |
61 | ART_CLIENT(wxART_HELP_BROWSER) | |
62 | ART_CLIENT(wxART_MESSAGE_BOX) | |
63 | } | |
64 | ||
65 | static void FillBitmaps(wxImageList *images, wxListCtrl *list, | |
66 | int& index, | |
67 | const wxArtClient& client, const wxSize& size) | |
68 | { | |
69 | ART_ICON(wxART_ERROR) | |
70 | ART_ICON(wxART_QUESTION) | |
71 | ART_ICON(wxART_WARNING) | |
72 | ART_ICON(wxART_INFORMATION) | |
73 | ART_ICON(wxART_ADD_BOOKMARK) | |
74 | ART_ICON(wxART_DEL_BOOKMARK) | |
75 | ART_ICON(wxART_HELP_SIDE_PANEL) | |
76 | ART_ICON(wxART_HELP_SETTINGS) | |
77 | ART_ICON(wxART_HELP_BOOK) | |
78 | ART_ICON(wxART_HELP_FOLDER) | |
79 | ART_ICON(wxART_HELP_PAGE) | |
80 | ART_ICON(wxART_GO_BACK) | |
81 | ART_ICON(wxART_GO_FORWARD) | |
82 | ART_ICON(wxART_GO_UP) | |
83 | ART_ICON(wxART_GO_DOWN) | |
84 | ART_ICON(wxART_GO_TO_PARENT) | |
85 | ART_ICON(wxART_GO_HOME) | |
86 | ART_ICON(wxART_FILE_OPEN) | |
87 | ART_ICON(wxART_PRINT) | |
88 | ART_ICON(wxART_HELP) | |
89 | ART_ICON(wxART_TIP) | |
90 | ART_ICON(wxART_REPORT_VIEW) | |
91 | ART_ICON(wxART_LIST_VIEW) | |
92 | ART_ICON(wxART_NEW_DIR) | |
93 | ART_ICON(wxART_FOLDER) | |
94 | ART_ICON(wxART_GO_DIR_UP) | |
95 | ART_ICON(wxART_EXECUTABLE_FILE) | |
96 | ART_ICON(wxART_NORMAL_FILE) | |
97 | ART_ICON(wxART_TICK_MARK) | |
98 | ART_ICON(wxART_CROSS_MARK) | |
99 | } | |
100 | ||
101 | ||
102 | // ---------------------------------------------------------------------------- | |
103 | // Browser implementation | |
104 | // ---------------------------------------------------------------------------- | |
105 | ||
106 | #include "null.xpm" | |
107 | ||
108 | BEGIN_EVENT_TABLE(wxArtBrowserDialog, wxDialog) | |
109 | EVT_LIST_ITEM_SELECTED(-1, wxArtBrowserDialog::OnSelectItem) | |
110 | EVT_CHOICE(-1, wxArtBrowserDialog::OnChooseClient) | |
111 | END_EVENT_TABLE() | |
112 | ||
113 | wxArtBrowserDialog::wxArtBrowserDialog(wxWindow *parent) | |
114 | : wxDialog(parent, -1, _T("Art resources browser"), | |
115 | wxDefaultPosition, wxDefaultSize, | |
116 | wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) | |
117 | { | |
118 | wxSizer *sizer = new wxBoxSizer(wxVERTICAL); | |
119 | wxSizer *subsizer; | |
120 | ||
121 | wxChoice *choice = new wxChoice(this, -1); | |
122 | FillClients(choice); | |
123 | ||
124 | subsizer = new wxBoxSizer(wxHORIZONTAL); | |
125 | subsizer->Add(new wxStaticText(this, -1, _T("Client:")), 0, wxALIGN_CENTER_VERTICAL); | |
126 | subsizer->Add(choice, 1, wxLEFT, 5); | |
127 | sizer->Add(subsizer, 0, wxALL | wxEXPAND, 10); | |
128 | ||
129 | subsizer = new wxBoxSizer(wxHORIZONTAL); | |
130 | ||
131 | m_list = new wxListCtrl(this, -1, wxDefaultPosition, wxSize(250, 300), | |
132 | wxLC_REPORT | wxSUNKEN_BORDER); | |
133 | m_list->InsertColumn(0, _T("wxArtID")); | |
134 | subsizer->Add(m_list, 1, wxEXPAND | wxRIGHT, 10); | |
135 | ||
136 | wxSizer *subsub = new wxBoxSizer(wxVERTICAL); | |
137 | m_canvas = new wxStaticBitmap(this, -1, wxBitmap(null_xpm)); | |
138 | subsub->Add(m_canvas); | |
139 | subsub->Add(100, 100); | |
140 | subsizer->Add(subsub); | |
141 | ||
142 | sizer->Add(subsizer, 1, wxEXPAND | wxLEFT|wxRIGHT, 10); | |
143 | ||
144 | wxButton *ok = new wxButton(this, wxID_OK, _T("Close")); | |
145 | ok->SetDefault(); | |
146 | sizer->Add(ok, 0, wxALIGN_RIGHT | wxALL, 10); | |
147 | ||
148 | SetSizer(sizer); | |
149 | SetAutoLayout(TRUE); | |
150 | sizer->Fit(this); | |
151 | ||
152 | choice->SetSelection(6/*wxART_MESSAGE_BOX*/); | |
153 | SetArtClient(wxART_MESSAGE_BOX); | |
154 | } | |
155 | ||
156 | ||
157 | void wxArtBrowserDialog::SetArtClient(const wxArtClient& client) | |
158 | { | |
159 | wxBusyCursor bcur; | |
160 | ||
161 | wxImageList *img = new wxImageList(16, 16); | |
162 | img->Add(wxIcon(null_xpm)); | |
163 | int index = 0; | |
164 | ||
165 | m_list->DeleteAllItems(); | |
166 | FillBitmaps(img, m_list, index, client, wxSize(16, 16)); | |
167 | m_list->AssignImageList(img, wxIMAGE_LIST_SMALL); | |
168 | m_list->SetColumnWidth(0, wxLIST_AUTOSIZE); | |
169 | ||
170 | m_client = client; | |
171 | } | |
172 | ||
173 | void wxArtBrowserDialog::OnSelectItem(wxListEvent &event) | |
174 | { | |
175 | const wxChar *data = (const wxChar*)event.GetData(); | |
176 | wxBitmap bmp = wxArtProvider::GetBitmap(data, m_client); | |
177 | m_canvas->SetBitmap(bmp); | |
178 | m_canvas->SetSize(bmp.GetWidth(), bmp.GetHeight()); | |
179 | } | |
180 | ||
181 | void wxArtBrowserDialog::OnChooseClient(wxCommandEvent &event) | |
182 | { | |
183 | const wxChar *data = (const wxChar*)event.GetClientData(); | |
184 | SetArtClient(data); | |
185 | } |