]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/helpfrm.cpp
Don't do the wx cleanup if wxPython didn't do the initialization.
[wxWidgets.git] / src / html / helpfrm.cpp
index 30b5c0119aba59775d4f09f5e93ae7a9fcb066bb..076addc04d5715cc239a9b4a96f8961c84f8deb7 100644 (file)
 #include "wx/fontenum.h"
 #include "wx/stream.h"
 #include "wx/filedlg.h"
-
-// Bitmaps:
-
-#ifndef __WXMSW__
-    // XPM hack: make the arrays const
-    #define static static const
-
-    #include "bitmaps/wpanel.xpm"
-    #include "bitmaps/wback.xpm"
-    #include "bitmaps/wforward.xpm"
-    #include "bitmaps/wbook.xpm"
-    #include "bitmaps/woptions.xpm"
-    #include "bitmaps/wfolder.xpm"
-    #include "bitmaps/wpage.xpm"
-    #include "bitmaps/whelp.xpm"
-    #include "bitmaps/whlproot.xpm"
-    #include "bitmaps/wbkadd.xpm"
-    #include "bitmaps/wbkdel.xpm"
-    #include "bitmaps/wup.xpm"
-    #include "bitmaps/wupnode.xpm"
-    #include "bitmaps/wdown.xpm"
-    #include "bitmaps/wopen.xpm"
-    #include "bitmaps/wprint.xpm"
-
-    #undef static
-#endif // __WXMSW__
+#include "wx/artprov.h"
 
 // what is considered "small index"?
 #define INDEX_IS_SMALL 100
@@ -253,10 +228,9 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id,
     m_hfStyle = style;
 
     wxImageList *ContentsImageList = new wxImageList(16, 16);
-    ContentsImageList->Add(wxICON(wbook));
-    ContentsImageList->Add(wxICON(wfolder));
-    ContentsImageList->Add(wxICON(wpage));
-    ContentsImageList->Add(wxICON(whlproot));
+    ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_BOOK, wxART_HELP_BROWSER));
+    ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_FOLDER, wxART_HELP_BROWSER));
+    ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_PAGE, wxART_HELP_BROWSER));
 
     // Do the config in two steps. We read the HtmlWindow customization after we
     // create the window.
@@ -269,7 +243,7 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id,
 
     GetPosition(&m_Cfg.x, &m_Cfg.y);
 
-    SetIcon(wxICON(whelp));
+    SetIcon(wxArtProvider::GetIcon(wxART_FRAME_ICON, wxART_HELP_BROWSER));
 
     int notebook_page = 0;
 
@@ -327,11 +301,6 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id,
         dummy->SetAutoLayout(TRUE);
         dummy->SetSizer(topsizer);
 
-        long treeStyle = wxSUNKEN_BORDER | wxTR_HAS_BUTTONS;
-        #ifndef __WXMSW__ // FIXME - temporary, till MSW supports wxTR_HIDE_ROOT
-        treeStyle |= wxTR_HIDE_ROOT;
-        #endif
-
         if ( style & wxHF_BOOKMARKS )
         {
             m_Bookmarks = new wxComboBox(dummy, wxID_HTML_BOOKMARKSLIST, 
@@ -345,11 +314,11 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id,
 
             wxBitmapButton *bmpbt1, *bmpbt2;
             bmpbt1 = new wxBitmapButton(dummy, wxID_HTML_BOOKMARKSADD, 
-                                        wxBITMAP(wbkadd)
-                                        wxDefaultPosition, wxSize(20,20));
+                                 wxArtProvider::GetBitmap(wxART_ADD_BOOKMARK
+                                                          wxART_HELP_BROWSER));
             bmpbt2 = new wxBitmapButton(dummy, wxID_HTML_BOOKMARKSREMOVE, 
-                                        wxBITMAP(wbkdel)
-                                        wxDefaultPosition, wxSize(20,20));
+                                 wxArtProvider::GetBitmap(wxART_DEL_BOOKMARK
+                                                          wxART_HELP_BROWSER));
 #if wxUSE_TOOLTIPS
             bmpbt1->SetToolTip(_("Add current page to bookmarks"));
             bmpbt2->SetToolTip(_("Remove current page from bookmarks"));
@@ -357,16 +326,19 @@ bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id,
 
             wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
             
-            sizer->Add(m_Bookmarks, 1, wxRIGHT, 5);
-            sizer->Add(bmpbt1, 0, wxRIGHT, 2);
-            sizer->Add(bmpbt2, 0, 0, 0);
+            sizer->Add(m_Bookmarks, 1, wxALIGN_CENTRE_VERTICAL | wxRIGHT, 5);
+            sizer->Add(bmpbt1, 0, wxALIGN_CENTRE_VERTICAL | wxRIGHT, 2);
+            sizer->Add(bmpbt2, 0, wxALIGN_CENTRE_VERTICAL, 0);
             
             topsizer->Add(sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 10);
         }
 
         m_ContentsBox = new wxTreeCtrl(dummy, wxID_HTML_TREECTRL,
                                        wxDefaultPosition, wxDefaultSize,
-                                       treeStyle);
+                                       wxSUNKEN_BORDER | 
+                                       wxTR_HAS_BUTTONS | wxTR_HIDE_ROOT |
+                                       wxTR_LINES_AT_ROOT);
+
         m_ContentsBox->AssignImageList(ContentsImageList);
         
         topsizer->Add(m_ContentsBox, 1, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 2);
@@ -497,15 +469,24 @@ wxHtmlHelpFrame::~wxHtmlHelpFrame()
 
 void wxHtmlHelpFrame::AddToolbarButtons(wxToolBar *toolBar, int style)
 {
-    wxBitmap wpanelBitmap = wxBITMAP(wpanel);
-    wxBitmap wbackBitmap = wxBITMAP(wback);
-    wxBitmap wforwardBitmap = wxBITMAP(wforward);
-    wxBitmap wupnodeBitmap = wxBITMAP(wupnode);
-    wxBitmap wupBitmap = wxBITMAP(wup);
-    wxBitmap wdownBitmap = wxBITMAP(wdown);
-    wxBitmap wopenBitmap = wxBITMAP(wopen);
-    wxBitmap wprintBitmap = wxBITMAP(wprint);
-    wxBitmap woptionsBitmap = wxBITMAP(woptions);
+    wxBitmap wpanelBitmap = 
+        wxArtProvider::GetBitmap(wxART_HELP_SIDE_PANEL, wxART_HELP_BROWSER);
+    wxBitmap wbackBitmap = 
+        wxArtProvider::GetBitmap(wxART_GO_BACK, wxART_HELP_BROWSER);
+    wxBitmap wforwardBitmap = 
+        wxArtProvider::GetBitmap(wxART_GO_FORWARD, wxART_HELP_BROWSER);
+    wxBitmap wupnodeBitmap = 
+        wxArtProvider::GetBitmap(wxART_GO_TO_PARENT, wxART_HELP_BROWSER);
+    wxBitmap wupBitmap = 
+        wxArtProvider::GetBitmap(wxART_GO_UP, wxART_HELP_BROWSER);
+    wxBitmap wdownBitmap = 
+        wxArtProvider::GetBitmap(wxART_GO_DOWN, wxART_HELP_BROWSER);
+    wxBitmap wopenBitmap = 
+        wxArtProvider::GetBitmap(wxART_FILE_OPEN, wxART_HELP_BROWSER);
+    wxBitmap wprintBitmap = 
+        wxArtProvider::GetBitmap(wxART_PRINT, wxART_HELP_BROWSER);
+    wxBitmap woptionsBitmap = 
+        wxArtProvider::GetBitmap(wxART_HELP_SETTINGS, wxART_HELP_BROWSER);
 
     wxASSERT_MSG( (wpanelBitmap.Ok() && wbackBitmap.Ok() &&
                    wforwardBitmap.Ok() && wupnodeBitmap.Ok() &&
@@ -711,7 +692,6 @@ void wxHtmlHelpFrame::CreateContents()
 
     int cnt = m_Data->GetContentsCnt();
     int i;
-    size_t booksCnt = m_Data->GetBookRecArray().GetCount();
 
     wxHtmlContentsItem *it;
 
@@ -726,52 +706,29 @@ void wxHtmlHelpFrame::CreateContents()
     bool imaged[MAX_ROOTS];
     m_ContentsBox->DeleteAllItems();
     
-    // FIXME - will go away when wxMSW's wxTreeCtrl supports wxTR_HIDE_ROOT!
-    bool hasSuperRoot = (booksCnt > 1) || 
-                        (m_ContentsBox->GetWindowStyle() & wxTR_HIDE_ROOT);
-
-    // Don't show (Help) root if there's only one boook
-    if (hasSuperRoot)
-    {
-        roots[0] = m_ContentsBox->AddRoot(_("(Help)"));
-        m_ContentsBox->SetItemImage(roots[0], IMG_RootFolder);
-        m_ContentsBox->SetItemSelectedImage(roots[0], IMG_RootFolder);
-        imaged[0] = TRUE;
-    }
+    roots[0] = m_ContentsBox->AddRoot(_("(Help)"));
+    imaged[0] = TRUE;
 
     for (it = m_Data->GetContents(), i = 0; i < cnt; i++, it++)
     {
         // Handle books:
         if (it->m_Level == 0)
         {
-            // special case, only one book, make it tree's root:
-            if (!hasSuperRoot)
+            if (m_hfStyle & wxHF_MERGE_BOOKS)
+                // VS: we don't want book nodes, books' content should
+                //    appear under tree's root. This line will create "fake"
+                //    record about book node so that the rest of this look
+                //    will believe there really _is_ book node and will
+                //    behave correctly.
+                roots[1] = roots[0];
+            else
             {
-                roots[0] = roots[1] = m_ContentsBox->AddRoot(
+                roots[1] = m_ContentsBox->AppendItem(roots[0],
                                          it->m_Name, IMG_Book, -1,
                                          new wxHtmlHelpTreeItemData(i));
-                imaged[0] = imaged[1] = TRUE;
                 m_ContentsBox->SetItemBold(roots[1], TRUE);
             }
-            // multiple books:
-            else
-            {
-                if (m_hfStyle & wxHF_MERGE_BOOKS)
-                    // VS: we don't want book nodes, books' content should
-                    //    appear under tree's root. This line will create "fake"
-                    //    record about book node so that the rest of this look
-                    //    will believe there really _is_ book node and will
-                    //    behave correctly.
-                    roots[1] = roots[0];
-                else
-                {
-                    roots[1] = m_ContentsBox->AppendItem(roots[0],
-                                             it->m_Name, IMG_Book, -1,
-                                             new wxHtmlHelpTreeItemData(i));
-                    m_ContentsBox->SetItemBold(roots[1], TRUE);
-                }
-                imaged[1] = TRUE;
-            }
+            imaged[1] = TRUE;
         }
         // ...and their contents:
         else
@@ -1008,12 +965,14 @@ class wxHtmlHelpFrameOptionsDialog : public wxDialog
 
                 topsizer->Add(new wxStaticText(this, -1, _("Preview:")),
                                 0, wxLEFT | wxTOP, 10);
-                topsizer->Add(TestWin = new wxHtmlWindow(this, -1, wxDefaultPosition, wxSize(-1, 150),
+                topsizer->Add(TestWin = new wxHtmlWindow(this, -1, wxDefaultPosition, wxSize(20, 150),
                                                          wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER),
                                 1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10);
 
                 sizer = new wxBoxSizer(wxHORIZONTAL);
-                sizer->Add(new wxButton(this, wxID_OK, _("OK")), 0, wxALL, 10);
+                wxButton *ok;
+                sizer->Add(ok = new wxButton(this, wxID_OK, _("OK")), 0, wxALL, 10);
+                ok->SetDefault();
                 sizer->Add(new wxButton(this, wxID_CANCEL, _("Cancel")), 0, wxALL, 10);
                 topsizer->Add(sizer, 0, wxALIGN_RIGHT);