home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / samples / artprov / artbrows.cpp next >
C/C++ Source or Header  |  2002-12-16  |  6KB  |  186 lines

  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: artbrows.cpp,v 1.3.2.1 2002/12/13 21:38:40 MBN Exp $
  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. }
  186.