controls can now be put in the toolbars (MSW only so far, preliminary version)
[wxWidgets.git] / src / common / prntbase.cpp
index 9c1c91ee2e3dd74937a70c034199bdb1876b250b..ce52bc53fd21da2a389966a763f4c3222cc646ba 100644 (file)
@@ -384,14 +384,21 @@ void wxPreviewControlBar::CreateButtons()
             "120%", "150%", "200%"
         };
 
-        m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM,
-                                     wxPoint(x, y), wxSize(100, -1));
-                                    
-        // Yes, this look stupid, but this is because gcc gives up otherwise.
         int n = WXSIZEOF(choices);
-        for ( int i = 0; i < n; i++ )
-           m_zoomControl->Append(choices[i]);
-       
+
+        wxString* strings = new wxString[n];
+        int i;
+        for (i = 0; i < n; i++ )
+           strings[i] = choices[i];
+
+        m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM,
+                                     wxPoint(x, y),
+                                     wxSize(100, -1),
+                                     n,
+                                     strings
+                                    );
+        delete[] strings;
+
         SetZoomControl(m_printPreview->GetZoom());
     }
 
@@ -402,6 +409,7 @@ void wxPreviewControlBar::SetZoomControl(int zoom)
 {
     char buf[20];
     sprintf(buf, "%d%%", zoom);
+// Someone is calling methods that do no exist in wxChoice!! So I'll just comment out for VA for now
     if (m_zoomControl)
         m_zoomControl->SetStringSelection(buf);
 }
@@ -409,7 +417,7 @@ void wxPreviewControlBar::SetZoomControl(int zoom)
 int wxPreviewControlBar::GetZoomControl()
 {
     wxChar buf[20];
-    if (m_zoomControl && (m_zoomControl->GetStringSelection() != _T("")))
+    if (m_zoomControl && (m_zoomControl->GetStringSelection() != wxT("")))
     {
         wxStrcpy(buf, m_zoomControl->GetStringSelection());
         buf[wxStrlen(buf) - 1] = 0;
@@ -563,8 +571,10 @@ void wxPrintPreviewBase::Init(wxPrintout *printout,
     m_leftMargin = 40;
     m_pageWidth = 0;
     m_pageHeight = 0;
+    m_printingPrepared = FALSE;
 
-    printout->OnPreparePrinting();
+    // Too soon! Moved to RenderPage.
+    // printout->OnPreparePrinting();
 
     // Get some parameters from the printout, if defined
     int selFrom, selTo;
@@ -678,6 +688,13 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
     m_previewPrintout->SetDC(&memoryDC);
     m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight);
 
+    // Need to delay OnPreparePrinting until here, so we have enough information.
+    if (!m_printingPrepared)
+    {
+        m_previewPrintout->OnPreparePrinting();
+        m_printingPrepared = TRUE;
+    }
+
     m_previewPrintout->OnBeginPrinting();
 
     if (!m_previewPrintout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))