diff options
| author | 2009-02-25 17:32:51 +0000 | |
|---|---|---|
| committer | 2009-02-25 17:32:51 +0000 | |
| commit | 8ca800097cebd4c21f9cc04b60e211da6d89da47 (patch) | |
| tree | ec9b21b5a9260054255518c91e595c6cb3cb6f3d /src/modules/objects/class_painter.cpp | |
| parent | probably fix for #375 (diff) | |
| download | KVIrc-8ca800097cebd4c21f9cc04b60e211da6d89da47.tar.gz KVIrc-8ca800097cebd4c21f9cc04b60e211da6d89da47.tar.bz2 KVIrc-8ca800097cebd4c21f9cc04b60e211da6d89da47.zip | |
Some fix/improvements in objects module
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3099 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/objects/class_painter.cpp')
| -rw-r--r-- | src/modules/objects/class_painter.cpp | 103 |
1 files changed, 87 insertions, 16 deletions
diff --git a/src/modules/objects/class_painter.cpp b/src/modules/objects/class_painter.cpp index 5991585ee..df12d24a6 100644 --- a/src/modules/objects/class_painter.cpp +++ b/src/modules/objects/class_painter.cpp @@ -33,7 +33,7 @@ #include "kvi_error.h" #include "kvi_iconmanager.h" #include "kvi_malloc.h" - + #include <QPrintDialog> #include <QTextDocument> #include <QIcon> @@ -1028,24 +1028,81 @@ KVSO_CLASS_FUNCTION(painter,begin) CHECK_INTERNAL_POINTER(m_pPainter) KviKvsObject * pObject; kvs_hobject_t hObject; + KviKvsVariant *v; + QString szFileName; + kvs_int_t i; KVSO_PARAMETERS_BEGIN(c) - KVSO_PARAMETER("paint_device",KVS_PT_HOBJECT,0,hObject) + KVSO_PARAMETER("paint_device",KVS_PT_VARIANT,0,v) + KVSO_PARAMETER("y",KVS_PT_INT,KVS_PF_OPTIONAL,i) + KVSO_PARAMETER("file_name",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName) KVSO_PARAMETERS_END(c) - pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject); - if (!pObject) - { + debug ("check device"); + QPaintDevice * pd; + if(v->isString()) + { + QString szDev; + v->asString(szDev); + if(KviQString::equalCI(szDev,"printer") || KviQString::equalCI(szDev,"pdf")) + { + if (m_pPrinter) delete m_pPrinter; + m_pPrinter=new QPrinter(); + if ( KviQString::equalCI(szDev,"pdf")) + { + // m_pPrinter=new QPrinter(); + if(szFileName.isEmpty()) + { + c->warning(__tr2qs_ctx("Missing filename","objects")); + return true; + } + m_pPrinter->setOutputFormat(QPrinter::PdfFormat); + m_pPrinter->setOutputFileName(szFileName); + + } + else{ + QPrintDialog printDialog(m_pPrinter, 0); + if (printDialog.exec() == QDialog::Accepted) { + debug("papersize %d",m_pPrinter->paperSize()); + m_pPainter->begin(m_pPrinter); + return true; + } + else { + m_pPrinter=0; + return true; + } + } + //if (i==3) m_pPrinter->setPaperSize(QPrinter::A3); + //if (i==4) m_pPrinter->setPaperSize(QPrinter::A4); + } + else{ + c->warning(__tr2qs_ctx("No valid paint device","objects")); + return true; + } + m_pPainter->begin(m_pPrinter); + return true; + } + else if (v->isHObject()) + { + v->asHObject(hObject); + pObject=KviKvsKernel::instance()->objectController()->lookupObject(hObject); + if (!pObject) + { c->warning(__tr2qs_ctx("Pixmap or Widget parameter is not an object","objects")); return true; - } - QPaintDevice * pd; - if(pObject->inheritsClass("pixmap"))pd=((KviKvsObject_pixmap *)pObject)->getPixmap(); + } - else if (pObject->inheritsClass("widget")) pd=((KviKvsObject_widget *)pObject)->widget(); - else{ - c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects")); - return true; - } - attachDevice(pObject,pd); + if(pObject->inheritsClass("pixmap"))pd=((KviKvsObject_pixmap *)pObject)->getPixmap(); + else if (pObject->inheritsClass("widget")) pd=((KviKvsObject_widget *)pObject)->widget(); + else + { + c->warning(__tr2qs_ctx("Widget or Pixmap required ","objects")); + return true; + } + } + else { + c->warning(__tr2qs_ctx("No valid paint device","objects")); + return true; + } + attachDevice(pObject,pd); //if (pObject->inheritsClass("pixmap")) ((KviKvsObject_pixmap *)pObject)->pixmapChanged(); return true; } @@ -1067,12 +1124,26 @@ void KviKvsObject_painter::detachDevice() if(!m_pDeviceObject)return; disconnect(m_pDeviceObject,SIGNAL(aboutToDie()),this,SLOT(detachDevice())); m_pPainter->end(); + if (m_pPrinter) + { + delete m_pPrinter; + m_pPrinter=0; + } m_pDeviceObject = 0; } KVSO_CLASS_FUNCTION(painter,end) { - detachDevice(); + if(!m_pDeviceObject) + { + m_pPainter->end(); + if (m_pPrinter) + { + delete m_pPrinter; + m_pPrinter=0; + } + } + else detachDevice(); return true; } KVSO_CLASS_FUNCTION(painter,beginPdf) @@ -1084,7 +1155,7 @@ KVSO_CLASS_FUNCTION(painter,beginPdf) KVSO_PARAMETERS_END(c) if (m_pPrinter) delete m_pPrinter; m_pPrinter=new QPrinter();//QPrinter::HighResolution); - m_pPrinter->setOutputFormat(QPrinter::PdfFormat); + m_pPrinter->setOutputFormat(QPrinter::PdfFormat); m_pPrinter->setOutputFileName(szFileName); m_pPainter->begin(m_pPrinter); return true; |
