3
* $Id: printmanager.cpp 3746 2011-04-19 10:41:32Z carlos $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
14
#include <wx/string.h>
15
#include <wx/checkbox.h>
16
#include <wx/choice.h>
17
#include <wx/gdicmn.h>
19
#include <wx/colour.h>
20
#include <wx/settings.h>
21
#include <wx/stattext.h>
22
#include <wx/checklst.h>
24
#include <wx/statbox.h>
25
#include <wx/slider.h>
26
#include <wx/gbsizer.h>
27
#include <wx/statline.h>
28
#include <wx/button.h>
29
#include <wx/statusbr.h>
31
#include "printmanager.h"
33
#include <wx/printdlg.h>
34
#include <api/math/geometria.h>
35
#include <main/entorno.h>
37
#include <wx/ginkgostyle/ginkgostyle.h>
38
#include <wx/dcclient.h>
40
#include <export/icontratoscore.h>
41
#include <api/icontextoestudio.h>
45
typedef struct MemoryBitmap
75
typedef struct TipoWizardImprimir{
76
GNC::GCS::IVista* m_pVista;
79
bool m_incluirWidgets;
80
typedef GNC::GCS::IContratoExportacionImages::MapaMapasValoracion MapaMapasValoracion;
81
MapaMapasValoracion m_mapasValoracion;
90
m_incluirWidgets = false;
95
~TipoWizardImprimir(){
97
m_mapasValoracion.clear();
100
} TipoWizardImprimir;
102
//se hace solo para exponer el atributo m_printingPrepared para refrescar como dios manda
103
class MiPrintPreview: public wxPrintPreview
106
MiPrintPreview(wxPrintout* pPrintOutPreview, wxPrintout* pPrintOutPrint,wxPrintData* pPrintData): wxPrintPreview(pPrintOutPreview,pPrintOutPrint,pPrintData)
113
void VolverAConsultarPaginas()
115
#if defined(USE_PATCHED_LIBS)
116
((MiPrintPreview*) ((wxPrintPreviewBase*)(m_pimpl)))->m_printingPrepared = false;
119
void InvalidarPreviewBitmap()
121
#if defined(USE_PATCHED_LIBS)
122
if(((MiPrintPreview*) ((wxPrintPreviewBase*)(m_pimpl)))->m_previewBitmap!=NULL)
124
delete ((MiPrintPreview*) ((wxPrintPreviewBase*)(m_pimpl)))->m_previewBitmap;
125
((MiPrintPreview*) ((wxPrintPreviewBase*)(m_pimpl)))->m_previewBitmap = NULL;
130
//////////////////////////
131
PrintManager::PrintManager(const wxString& titulo, wxPrintData* pPrintData ) : wxPrintout(titulo)
133
m_pPrintData = pPrintData;
134
m_pDatosExportacion = NULL;
137
PrintManager::~PrintManager()
140
m_pDatosExportacion = NULL;
143
bool PrintManager::HasPage(int page)
145
if(m_pDatosExportacion != NULL) {
146
int tmpMax = m_pDatosExportacion->m_pVista->GetRutasImagenes().size() / (m_pDatosExportacion->m_filas* m_pDatosExportacion->m_columnas);
147
if(m_pDatosExportacion->m_pVista->GetRutasImagenes().size() % (m_pDatosExportacion->m_filas* m_pDatosExportacion->m_columnas) != 0) {
150
if(page >=1 && page <= tmpMax)
161
bool PrintManager::OnBeginDocument(int startPage, int endPage)
163
if (!wxPrintout::OnBeginDocument(startPage, endPage))
170
void PrintManager::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
172
if(m_pDatosExportacion != NULL) {
174
int tmpMax = m_pDatosExportacion->m_pVista->GetRutasImagenes().size() / (m_pDatosExportacion->m_filas* m_pDatosExportacion->m_columnas);
175
if(m_pDatosExportacion->m_pVista->GetRutasImagenes().size() % (m_pDatosExportacion->m_filas* m_pDatosExportacion->m_columnas) != 0) {
190
bool PrintManager::OnPrintPage(int page){
192
if (dc && m_pDatosExportacion)
194
//adapto el layout a la orientacion
195
if(this->GetLogicalPageRect().GetSize().GetWidth() > this->GetLogicalPageRect().GetSize().GetHeight()//si ancho mayor que alto
196
&& m_pDatosExportacion->m_filas > m_pDatosExportacion->m_columnas)// y filas mayor que columnas se intercambian
198
int filasTemp = m_pDatosExportacion->m_filas;
199
m_pDatosExportacion->m_filas = m_pDatosExportacion->m_columnas;
200
m_pDatosExportacion->m_columnas = filasTemp;
201
} else if (this->GetLogicalPageRect().GetSize().GetWidth() < this->GetLogicalPageRect().GetSize().GetHeight()//si alto mayor que ancho
202
&& m_pDatosExportacion->m_filas < m_pDatosExportacion->m_columnas)// y col mayor que filas se intercambian
204
int filasTemp = m_pDatosExportacion->m_filas;
205
m_pDatosExportacion->m_filas = m_pDatosExportacion->m_columnas;
206
m_pDatosExportacion->m_columnas = filasTemp;
210
int anchuraMM, alturaMM;
211
this->GetPageSizeMM(&anchuraMM,&alturaMM);
212
const int offSetImages = 5 * (this->GetLogicalPageRect().GetSize().GetWidth() / anchuraMM);
213
int imagen = (page-1)*m_pDatosExportacion->m_filas*m_pDatosExportacion->m_columnas;
214
const int anchoTotal = this->GetLogicalPageRect().GetSize().GetWidth()- (offSetImages * m_pDatosExportacion->m_columnas) - offSetImages;
215
const int altoTotal = this->GetLogicalPageRect().GetSize().GetHeight()- (offSetImages * m_pDatosExportacion->m_filas) - offSetImages;
216
const int anchoImagen = anchoTotal / m_pDatosExportacion->m_columnas;
217
const int altoImagen = altoTotal / m_pDatosExportacion->m_filas;
220
dc->SetBackground(*wxWHITE_BRUSH);
223
for(int fila = 0; fila < m_pDatosExportacion->m_filas; fila++)
225
for(int columna = 0; columna < m_pDatosExportacion->m_columnas && imagen < (int)m_pDatosExportacion->m_pVista->GetRutasImagenes().size(); columna++, imagen++)
227
MemoryBitmap* m_MemoryBitmap = new MemoryBitmap();
228
//pasamos los datos al helper y ya tenemos la imagen en memoria
229
RenderizaImagen(imagen, m_MemoryBitmap, GNC::GCS::Vector(anchoImagen, altoImagen));
230
if(m_MemoryBitmap->data != NULL) {
231
wxImage img( m_MemoryBitmap->ancho, m_MemoryBitmap->alto, m_MemoryBitmap->data, true );
234
const int xImg = (anchoImagen + offSetImages) * columna + offSetImages;
235
const int yImg = (altoImagen + offSetImages) * fila +offSetImages;
236
dc->DrawBitmap( img, xImg, yImg );
239
delete m_MemoryBitmap;
250
void PrintManager::SetDatosExportacion(TipoWizardImprimir* pDatosExportacion)
252
m_pDatosExportacion = pDatosExportacion;
255
void PrintManager::RenderizaImagen(int imagen, MemoryBitmap* pMemoryBitmap, const GNC::GCS::Vector& size)
257
GNC::GCS::IContratoExportacionImages* pContratoImages = dynamic_cast<GNC::GCS::IContratoExportacionImages*>(m_pDatosExportacion->m_pVista);
258
if(pContratoImages != NULL){
259
GNC::GCS::IContratoExportacionImages::ImageType::Pointer img;
260
pContratoImages->GetImage(img, imagen, m_pDatosExportacion->m_mapasValoracion, m_pDatosExportacion->m_incluirWidgets, size);
261
pMemoryBitmap->Clear();
264
GNC::GCS::IContratoExportacionImages::ImageType::PixelType* pixelPointer = img->GetPixelContainer()->GetImportPointer();
265
pMemoryBitmap->Clear();
266
pMemoryBitmap->data = (unsigned char*) ((void*)pixelPointer);
267
img->GetPixelContainer()->SetContainerManageMemory(false);
268
GNC::GCS::IContratoExportacionImages::ImageType::SizeType imgSize;
269
imgSize = img->GetLargestPossibleRegion().GetSize();
270
pMemoryBitmap->ancho = imgSize[0];
271
pMemoryBitmap->alto = imgSize[1];
277
/////////////////////////////////////////////////////////
278
DialogoImpresion::DialogoImpresion(wxWindow *parent, GNC::GCS::IVista* pVista,const wxString& titulo, wxPrintData* pPrintData):
279
wxPreviewFrame(new MiPrintPreview(new GNC::GCS::Printing::PrintManager(titulo,pPrintData),new GNC::GCS::Printing::PrintManager(titulo,pPrintData),pPrintData),parent,_("Print"))
281
m_pPrintData = pPrintData;
283
m_pPrintData->SetQuality(300);
284
#if defined(__WXGTK__)
285
m_pPrintData->SetPaperId(wxPAPER_A4);
289
for(int i = 10 ; i<=100; i+= 5){
290
m_zooms.push_back(i);
292
m_zooms.push_back(110);
293
m_zooms.push_back(120);
294
m_zooms.push_back(150);
295
m_zooms.push_back(200);
298
m_printManagerPreview = (PrintManager*) m_printPreview->GetPrintout();
299
m_printManagerImpresion = (PrintManager*) m_printPreview->GetPrintoutForPrinting();
301
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
304
bSizer9 = new wxBoxSizer( wxVERTICAL );
306
HeaderPanel* pPanelHeader = new HeaderPanel(this);
307
pPanelHeader->SetToolTip(_("Print"));
308
bSizer9->Add(pPanelHeader,0,wxEXPAND);
310
BodyPanel* pPanelFondo = new BodyPanel(this);
312
wxGridBagSizer* gbSizerPpal;
313
gbSizerPpal = new wxGridBagSizer( 0, 0 );
314
gbSizerPpal->AddGrowableCol( 2 );
315
gbSizerPpal->AddGrowableRow( 3 );
316
gbSizerPpal->SetFlexibleDirection( wxBOTH );
317
gbSizerPpal->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
319
SubTitledPanel* pPanelContenido = new SubTitledPanel(pPanelFondo, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
320
pPanelContenido->SetToolTip(_("Content"));
321
wxBoxSizer* sizerContenido;
322
sizerContenido = new wxBoxSizer( wxVERTICAL );
324
m_pIncluirWidgets = new wxCheckBox( pPanelContenido, wxID_ANY, _("Include Annotations"), wxDefaultPosition, wxDefaultSize, 0 );
325
sizerContenido->Add( m_pIncluirWidgets, 0, wxALL, 5 );
326
m_pIncluirWidgets->SetValue(true);
328
m_pTituloMapas = new wxStaticText( pPanelContenido, wxID_ANY, _("Evaluation Maps"), wxDefaultPosition, wxDefaultSize, 0 );
329
m_pTituloMapas->Wrap( -1 );
330
sizerContenido->Add( m_pTituloMapas, 0, wxALL, 5 );
332
wxArrayString m_pMapasCheckChoices;
333
m_pMapasCheck = new wxCheckListBox( pPanelContenido, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_pMapasCheckChoices, wxLB_MULTIPLE );
334
sizerContenido->Add( m_pMapasCheck, 1, wxALL|wxEXPAND, 5 );
336
pPanelContenido->SetSizer(sizerContenido);
338
gbSizerPpal->Add( pPanelContenido, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxEXPAND );
340
SubTitledPanelSeparator* pSepVertical = new SubTitledPanelSeparator(pPanelFondo);
341
gbSizerPpal->Add( pSepVertical, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxEXPAND );
343
SubTitledPanelSeparator* pSepHorizontal = new SubTitledPanelSeparator(pPanelFondo);
344
gbSizerPpal->Add( pSepHorizontal, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND );
346
m_pPanelPrevisualizacion = new SubTitledPanel(pPanelFondo, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
347
m_pPanelPrevisualizacion->SetToolTip(_("Preview"));
348
wxBoxSizer* sizerPrevisualizacion;
349
sizerPrevisualizacion = new wxBoxSizer( wxVERTICAL );
351
m_pSizerPrevisualizacion = new wxBoxSizer( wxVERTICAL );
353
sizerPrevisualizacion->Add( m_pSizerPrevisualizacion, 1, wxEXPAND );
355
wxBoxSizer* sizerZoomScroll;
356
sizerZoomScroll = new wxBoxSizer( wxHORIZONTAL );
358
m_pLabelPagina = new wxStaticText( m_pPanelPrevisualizacion, wxID_ANY, wxT("1/8"), wxDefaultPosition, wxDefaultSize, 0 );
359
m_pLabelPagina->Wrap( -1 );
360
sizerZoomScroll->Add( m_pLabelPagina, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
362
m_pSliderScroll = new wxSlider( m_pPanelPrevisualizacion, wxID_ANY, 5, 0, 10, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS|wxSL_HORIZONTAL|wxSL_TOP );
363
m_pSliderScroll->SetMinSize( wxSize( 150,-1 ) );
365
sizerZoomScroll->Add( m_pSliderScroll, 0, wxALL, 3 );
367
sizerZoomScroll->Add( 0, 0, 1, wxEXPAND, 5 );
369
wxStaticText* staticText5 = new wxStaticText( m_pPanelPrevisualizacion, wxID_ANY, _("Zoom"), wxDefaultPosition, wxDefaultSize, 0 );
370
staticText5->Wrap( -1 );
371
sizerZoomScroll->Add( staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
373
wxArrayString m_pZoomsChoices;
374
for(std::vector<int>::iterator it = m_zooms.begin(); it!= m_zooms.end(); it++)
376
m_pZoomsChoices.push_back(wxString::Format(wxT("%d %%"),(*it)));
378
m_pZooms = new wxChoice( m_pPanelPrevisualizacion, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_pZoomsChoices, 0 );
379
m_pZooms->SetSelection( 0 );
384
sizerZoomScroll->Add( m_pZooms, 0, wxALL, 5 );
386
sizerPrevisualizacion->Add( sizerZoomScroll, 0, wxEXPAND, 5 );
388
m_pPanelPrevisualizacion->SetSizer(sizerPrevisualizacion);
390
gbSizerPpal->Add( m_pPanelPrevisualizacion, wxGBPosition( 0, 2 ), wxGBSpan( 4, 1 ), wxEXPAND );
393
SubTitledPanel* pPanelOptions = new SubTitledPanel(pPanelFondo, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
394
pPanelOptions->SetToolTip(_("Options"));
395
wxBoxSizer* sizerOpciones;
396
sizerOpciones = new wxBoxSizer( wxHORIZONTAL );
398
wxStaticText* m_staticText7 = new wxStaticText( pPanelOptions, wxID_ANY, _("Images per sheet"), wxDefaultPosition, wxDefaultSize, 0 );
399
m_staticText7->Wrap( -1 );
400
sizerOpciones->Add( m_staticText7, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
402
wxString m_pPaginasHojaChoices[] = { wxT("1"), wxT("2"), wxT("4"), wxT("6") };
403
int m_pPaginasHojaNChoices = sizeof( m_pPaginasHojaChoices ) / sizeof( wxString );
404
m_pPaginasHoja = new wxChoice( pPanelOptions, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_pPaginasHojaNChoices, m_pPaginasHojaChoices, 0 );
405
m_pPaginasHoja->SetSelection( 0 );
406
sizerOpciones->Add( m_pPaginasHoja, 0 );
408
pPanelOptions->SetSizer(sizerOpciones);
410
gbSizerPpal->Add( pPanelOptions, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxEXPAND );
412
pPanelFondo->SetSizer(gbSizerPpal);
413
pPanelFondo->Layout();
415
bSizer9->Add( pPanelFondo, 1, wxEXPAND, 5 );
417
FooterPanel* pPanelBotones = new FooterPanel(this);
418
wxBoxSizer* bSizer13;
419
bSizer13 = new wxBoxSizer( wxHORIZONTAL );
421
bSizer13->Add( 0, 0, 1, wxEXPAND, 5 );
423
m_pBotonConfigurarPagina = new wxButton( pPanelBotones, wxID_ANY, _("Page Setup ..."), wxDefaultPosition, wxDefaultSize, 0 );
424
m_pBotonConfigurarPagina->SetDefault();
425
bSizer13->Add( m_pBotonConfigurarPagina, 0, wxRIGHT, 5 );
427
m_pBotonImprimir = new wxButton( pPanelBotones, wxID_ANY, _("Print ..."), wxDefaultPosition, wxDefaultSize, 0 );
428
m_pBotonImprimir->SetDefault();
429
bSizer13->Add( m_pBotonImprimir, 0, wxRIGHT|wxLEFT, 5 );
431
m_pBotonCancelar = new wxButton( pPanelBotones, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
432
bSizer13->Add( m_pBotonCancelar, 0, wxLEFT, 5 );
434
pPanelBotones->SetSizer(bSizer13);
435
bSizer13->Fit(pPanelBotones);
437
bSizer9->Add( pPanelBotones, 0, wxEXPAND );
439
this->SetSizer( bSizer9 );
440
this->SetMinSize(wxSize(900,600));
441
this->SetSize(wxSize(900,600));
447
this->Centre( wxBOTH );
449
m_pMapasCheck->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( DialogoImpresion::OnCheckCapasToggled ), NULL, this );
450
m_pIncluirWidgets->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DialogoImpresion::OnCheckWidgetsAnotacion ), NULL, this );
452
m_pBotonConfigurarPagina->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogoImpresion::OnConfigurarPaginaClick ), NULL, this );
453
m_pBotonImprimir->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogoImpresion::OnImprimirClick ), NULL, this );
454
m_pBotonCancelar->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogoImpresion::OnCancelarClick ), NULL, this );
456
m_pSliderScroll->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
457
m_pSliderScroll->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
458
m_pSliderScroll->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
459
m_pSliderScroll->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
460
m_pSliderScroll->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
461
m_pSliderScroll->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
462
m_pSliderScroll->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
463
m_pSliderScroll->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
464
m_pSliderScroll->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
466
m_pZooms->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DialogoImpresion::OnZoomChoice ), NULL, this );
468
m_pPaginasHoja->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DialogoImpresion::OnPaginasHoja ), NULL, this );
470
RefrescarParametros();
473
DialogoImpresion::~DialogoImpresion()
477
if(m_pDatosExportacion != NULL)
479
delete m_pDatosExportacion;
480
m_pDatosExportacion = NULL;
482
m_pMapasCheck->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( DialogoImpresion::OnCheckCapasToggled ), NULL, this );
483
m_pIncluirWidgets->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DialogoImpresion::OnCheckWidgetsAnotacion ), NULL, this );
485
m_pBotonConfigurarPagina->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogoImpresion::OnConfigurarPaginaClick ), NULL, this );
486
m_pBotonImprimir->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogoImpresion::OnImprimirClick ), NULL, this );
487
m_pBotonCancelar->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DialogoImpresion::OnCancelarClick ), NULL, this );
489
m_pSliderScroll->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
490
m_pSliderScroll->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
491
m_pSliderScroll->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
492
m_pSliderScroll->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
493
m_pSliderScroll->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
494
m_pSliderScroll->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
495
m_pSliderScroll->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
496
m_pSliderScroll->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
497
m_pSliderScroll->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( DialogoImpresion::OnScrollPage ), NULL, this );
499
m_pZooms->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DialogoImpresion::OnZoomChoice ), NULL, this );
501
m_pPaginasHoja->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DialogoImpresion::OnPaginasHoja ), NULL, this );
504
void DialogoImpresion::CreateCanvas()
508
#if defined(USE_PATCHED_LIBS)
509
m_previewCanvas = new wxPreviewCanvas(m_printPreview, m_pPanelPrevisualizacion,this);
510
m_pSizerPrevisualizacion->Add(m_previewCanvas,1,wxEXPAND|wxALL,3);
511
m_pPanelPrevisualizacion->Layout();
513
m_previewCanvas = NULL;
514
#warning "PRINT NOT SUPPORTED"
517
void DialogoImpresion::Initialize()
526
m_printPreview->SetCanvas(m_previewCanvas);
527
m_printPreview->SetFrame(this);
529
SetAutoLayout( true );
531
m_windowDisabler = new wxWindowDisabler(this);
533
m_printPreview->AdjustScrollbars(m_previewCanvas);
534
m_previewCanvas->SetFocus();
537
void DialogoImpresion::RefrescarParametros()
539
m_pDatosExportacion = new TipoWizardImprimir();
540
m_pDatosExportacion->m_incluirWidgets = true;
541
m_pDatosExportacion->m_pVista = m_pVista;
543
GNC::GCS::IContratoExportacionImages* pContratoImages = dynamic_cast<GNC::GCS::IContratoExportacionImages*>(m_pVista);
544
if(pContratoImages != NULL){
546
typedef GNC::GCS::IContratoExportacionImages::MapaMapasValoracion MapaMapasValoracion;
547
m_pDatosExportacion->m_mapasValoracion= pContratoImages->GetMapasValoracion();
548
if(m_pDatosExportacion->m_mapasValoracion.size() == 0) {
549
m_pTituloMapas->Show(false);
550
m_pMapasCheck->Show(false);
552
for(MapaMapasValoracion::iterator it= m_pDatosExportacion->m_mapasValoracion.begin(); it!= m_pDatosExportacion->m_mapasValoracion.end(); it++) {
553
int item = m_pMapasCheck->Append(wxString::FromUTF8((*it).first.c_str()));
554
m_pMapasCheck->Check(item,(*it).second);
558
m_printManagerPreview->SetDatosExportacion(m_pDatosExportacion);
559
m_printManagerImpresion->SetDatosExportacion(m_pDatosExportacion);
563
void DialogoImpresion::RefrescarSliders()
566
MiPrintPreview* pPrintPreview = dynamic_cast<MiPrintPreview*>(m_printPreview);
567
if(pPrintPreview!=NULL) {
568
pPrintPreview->VolverAConsultarPaginas();
570
m_printPreview->RenderPage(1);
574
if(m_printPreview->GetMaxPage() == m_printPreview->GetMinPage()) {
575
m_pSliderScroll->Show(false);
576
m_pLabelPagina->SetLabel(wxT("1/1"));
578
m_pSliderScroll->Show(true);
579
m_pSliderScroll->SetMin(m_printPreview->GetMinPage());
580
m_pSliderScroll->SetMax(m_printPreview->GetMaxPage());
581
m_pSliderScroll->SetValue(m_printPreview->GetCurrentPage());
582
std::ostringstream ostr;
583
ostr << m_pSliderScroll->GetValue() << "/" << m_pSliderScroll->GetMax();
584
m_pLabelPagina->SetLabel(wxString::FromUTF8(ostr.str().c_str()));
587
m_pZooms->Select(18);
592
void DialogoImpresion::OnConfigurarPaginaClick( wxCommandEvent& )
594
wxPageSetupDialogData data(*m_pPrintData);
595
wxPageSetupDialog pageSetupDialog(this,&data);
596
pageSetupDialog.ShowModal();
598
(*m_pPrintData) = pageSetupDialog.GetPageSetupDialogData().GetPrintData();
599
//se refresca el preview
600
m_printPreview->GetPrintDialogData().SetPrintData(*m_pPrintData);
601
m_printPreview->DetermineScaling();
602
MiPrintPreview* pPrintPreview = dynamic_cast<MiPrintPreview*>(m_printPreview);
603
if(pPrintPreview!=NULL) {
604
pPrintPreview->InvalidarPreviewBitmap();
606
pPrintPreview->AdjustScrollbars(m_previewCanvas);
607
m_printPreview->RenderPage(m_printPreview->GetCurrentPage());
611
void DialogoImpresion::OnImprimirClick( wxCommandEvent& )
613
m_printPreview->GetPrintDialogData().SetFromPage(m_printPreview->GetMinPage());
614
m_printPreview->GetPrintDialogData().SetToPage(m_printPreview->GetMaxPage());
615
m_printPreview->GetPrintDialogData().SetMinPage(m_printPreview->GetMinPage());
616
m_printPreview->GetPrintDialogData().SetMaxPage(m_printPreview->GetMaxPage());
617
m_printPreview->GetPrintDialogData().GetPrintData().SetQuality(300);
618
m_printPreview->GetPrintDialogData().GetPrintData().SetPaperId(m_pPrintData->GetPaperId());
619
m_printPreview->Print(true);
624
void DialogoImpresion::OnCancelarClick( wxCommandEvent& )
629
void DialogoImpresion::OnScrollPage ( wxScrollEvent& event)
631
GoToPage(event.GetPosition());
634
void DialogoImpresion::OnZoomChoice( wxCommandEvent& )
636
SetZoom(m_pZooms->GetSelection());
639
void DialogoImpresion::GoToPage(int page)
641
if (m_printPreview->GetPrintout()->HasPage(page))
643
m_printPreview->SetCurrentPage(page);
645
std::ostringstream ostr;
646
ostr << m_pSliderScroll->GetValue() << "/" << m_pSliderScroll->GetMax();
647
m_pLabelPagina->SetLabel(wxString::FromUTF8(ostr.str().c_str()));
651
void DialogoImpresion::SetZoom(int position)
653
if(position >=0 && position < (int)m_zooms.size()) {
654
if(m_zooms[position] != m_printPreview->GetZoom()) {
655
m_printPreview->SetZoom(m_zooms[position]);
660
void DialogoImpresion::OnPaginasHoja( wxCommandEvent& )
662
switch(m_pPaginasHoja->GetSelection())
666
m_pDatosExportacion->m_filas = 1;
667
m_pDatosExportacion->m_columnas = 1;
670
m_pDatosExportacion->m_filas = 1;
671
m_pDatosExportacion->m_columnas = 2;
674
m_pDatosExportacion->m_filas = 2;
675
m_pDatosExportacion->m_columnas = 2;
678
m_pDatosExportacion->m_filas = 2;
679
m_pDatosExportacion->m_columnas = 3;
685
void DialogoImpresion::OnCheckCapasToggled( wxCommandEvent& )
687
for(unsigned int i = 0; i< m_pMapasCheck->GetCount(); i++) {
688
std::string strTmp(m_pMapasCheck->GetString(i).ToUTF8());
689
m_pDatosExportacion->m_mapasValoracion[strTmp] = m_pMapasCheck->IsChecked(i);
691
m_printPreview->RenderPage(m_printPreview->GetCurrentPage());
692
m_previewCanvas->Refresh();
695
void DialogoImpresion::OnCheckWidgetsAnotacion( wxCommandEvent& )
697
m_pDatosExportacion->m_incluirWidgets = m_pIncluirWidgets->IsChecked();
698
m_printPreview->RenderPage(m_printPreview->GetCurrentPage());
699
m_previewCanvas->Refresh();