Re: [poppler] Poppler 0.7.1 (0.8 Beta 2) released
Vincent Torri schrieb: > > On Wed, 27 Feb 2008, Albert Astals Cid wrote: > >> Available from >> http://poppler.freedesktop.org/poppler-0.7.1.tar.gz >> >> Testing, patches and bug reports welcome. > > It works on Win XP (compiled with MinGW / MSYS) works on Win XP with cmake based build system too. Tested with mingw and MS Visual Studio 2005 Express Edition. > > Vincent Torri Patrick Spendrin -- web: http://windows.kde.org mailing list:[EMAIL PROTECTED] irc: #kde-windows (irc.freenode.net) ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] poppler/Makefile.am
poppler/Makefile.am |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) New commits: commit ff938c431799d49325c0f46f1e6cbe1033993a83 Author: Albert Astals Cid <[EMAIL PROTECTED]> Date: Wed Feb 27 23:12:53 2008 +0100 do not forget to distribute GlobalParamsWin.cc next time diff --git a/poppler/Makefile.am b/poppler/Makefile.am index 77f4f27..d98466b 100644 --- a/poppler/Makefile.am +++ b/poppler/Makefile.am @@ -236,4 +236,5 @@ libpoppler_la_SOURCES = \ Sound.cc\ XpdfPluginAPI.cc -EXTRA_DIST = gen-unicode-tables.py +EXTRA_DIST = gen-unicode-tables.py \ + GlobalParamsWin.cc ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] glib/demo
glib/demo/images.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit 277382b8186d137a9f2a62bc2d22e9f0cda7d923 Author: Albert Astals Cid <[EMAIL PROTECTED]> Date: Wed Feb 27 22:56:33 2008 +0100 fix typo diff --git a/glib/demo/images.c b/glib/demo/images.c index 8c10561..a389728 100644 --- a/glib/demo/images.c +++ b/glib/demo/images.c @@ -248,7 +248,7 @@ pgd_images_create_widget (PopplerDocument *document) gtk_widget_show (label); g_free (str); - button = gtk_button_new_with_label ("Get Imagess"); + button = gtk_button_new_with_label ("Get Images"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (pgd_images_get_images), (gpointer)demo); ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] 3 commits - qt4/src
qt4/src/poppler-optcontent-private.h | 17 +++-- qt4/src/poppler-optcontent.cc| 44 --- 2 files changed, 50 insertions(+), 11 deletions(-) New commits: commit 5b2f8f21fca63508570a0c77c6f7221a322e6e57 Merge: 7e65118... 4254f12... Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 22:10:12 2008 +0100 Merge branch 'master' of ssh://[EMAIL PROTECTED]/git/poppler/poppler commit 7e651186f483976f9833de245b6c7add38e77a16 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 22:03:17 2008 +0100 Properly enable/disable the contents when their parents are changed. Now, the children maintain the "checked state" they had, when their parent is unchecked; but, they are really disabled, both in the possibility to be checked and in the drawing of their associated content [applying the same to their children, and so on]. diff --git a/qt4/src/poppler-optcontent-private.h b/qt4/src/poppler-optcontent-private.h index 351e5e5..3a995f0 100644 --- a/qt4/src/poppler-optcontent-private.h +++ b/qt4/src/poppler-optcontent-private.h @@ -58,7 +58,7 @@ namespace Poppler ~OptContentItem(); QString name() const { return m_name; } -ItemState state() const { return m_state; } +ItemState state() const { return m_stateBackup; } bool setState(ItemState state, QSet &changedItems); QList childList() { return m_children; } @@ -70,13 +70,19 @@ namespace Poppler void appendRBGroup( RadioButtonGroup *rbgroup ); +bool isEnabled() const { return m_enabled; } + +QSet recurseListChildren(bool includeMe = false) const; + private: OptionalContentGroup *m_group; QString m_name; ItemState m_state; // true for ON, false for OFF +ItemState m_stateBackup; QList m_children; OptContentItem *m_parent; QList m_rbGroups; +bool m_enabled; }; class OptContentModelPrivate diff --git a/qt4/src/poppler-optcontent.cc b/qt4/src/poppler-optcontent.cc index 1a10c17..9f5894f 100644 --- a/qt4/src/poppler-optcontent.cc +++ b/qt4/src/poppler-optcontent.cc @@ -78,6 +78,8 @@ namespace Poppler } else { m_state = OptContentItem::Off; } +m_stateBackup = m_state; +m_enabled = true; } OptContentItem::OptContentItem( const QString &label ) @@ -86,10 +88,12 @@ namespace Poppler m_name = label; m_group = 0; m_state = OptContentItem::HeadingOnly; +m_stateBackup = m_state; +m_enabled = true; } OptContentItem::OptContentItem() : -m_parent( 0 ) +m_parent( 0 ), m_enabled(true) { } @@ -106,7 +110,15 @@ namespace Poppler bool OptContentItem::setState(ItemState state, QSet &changedItems) { m_state = state; +m_stateBackup = m_state; changedItems.insert(this); +QSet empty; +Q_FOREACH (OptContentItem *child, m_children) { + ItemState oldState = child->m_stateBackup; + child->setState(state == OptContentItem::On ? child->m_stateBackup : OptContentItem::Off, empty); + child->m_enabled = state == OptContentItem::On; + child->m_stateBackup = oldState; +} if (!m_group) { return false; } @@ -128,6 +140,18 @@ namespace Poppler child->setParent( this ); } + QSet OptContentItem::recurseListChildren(bool includeMe) const + { +QSet ret; +if (includeMe) { + ret.insert(const_cast(this)); +} +Q_FOREACH (OptContentItem *child, m_children) { + ret += child->recurseListChildren(true); +} +return ret; + } + OptContentModelPrivate::OptContentModelPrivate( OptContentModel *qq, OCGs *optContent ) : q(qq) { @@ -330,6 +354,7 @@ namespace Poppler if (node->state() != OptContentItem::On) { QSet changedItems; node->setState(OptContentItem::On, changedItems); +changedItems += node->recurseListChildren(false); QModelIndexList indexes; Q_FOREACH (OptContentItem *item, changedItems) { indexes.append(d->indexFromItem(item, 0)); @@ -344,6 +369,7 @@ namespace Poppler if (node->state() != OptContentItem::Off) { QSet changedItems; node->setState(OptContentItem::Off, changedItems); +changedItems += node->recurseListChildren(false); QModelIndexList indexes; Q_FOREACH (OptContentItem *item, changedItems) { indexes.append(d->indexFromItem(item, 0)); @@ -364,11 +390,12 @@ namespace Poppler Qt::ItemFlags OptContentModel::flags ( const QModelIndex & index ) const { -if (index.column() == 0) { - return QAbstractItemModel::flags(index) | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled; -} else { - return QAbstractItemModel::flags(index); +OptContentItem *node = d->nodeFromIndex(index); +Qt::ItemFlags itemFlags = Qt::ItemIsSelectable | Qt::ItemIsUserCheckable; +if (node->isEnabled()) { + itemFlags |= Qt
Re: [poppler] Poppler 0.7.1 (0.8 Beta 2) released
On Wed, 27 Feb 2008, Albert Astals Cid wrote: > Available from > http://poppler.freedesktop.org/poppler-0.7.1.tar.gz > > Testing, patches and bug reports welcome. It works on Win XP (compiled with MinGW / MSYS) Vincent Torri ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] Poppler 0.7.1 (0.8 Beta 2) released
Available from http://poppler.freedesktop.org/poppler-0.7.1.tar.gz This is the second release of what will be the 0.8 stable series. We will be having a roughly weekly release schedule until we hit 0.8 stable version. Major Changes: * Really distribute CMake files as optional build tool * Initial Optional Content support in core and in the Qt4 frontend Minor Changes: * Allow grouped checkboxes to be selected individually * Qt4 demo program improvements * Keep cairo and cairo_shape consistent * Safety checks on Splash renderer so that it does not draw outside the allocated bitmap * Do not try to display bitmaps of invalid size * Fix building with exceptions * Improvements for building with MSVC and CMake Testing, patches and bug reports welcome. Albert signature.asc Description: This is a digitally signed message part. ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] Changes to 'refs/tags/poppler-0.7.1'
Tag 'poppler-0.7.1' created by Albert Astals Cid <[EMAIL PROTECTED]> at 2008-02-27 19:45 -0800 Poppler 0.7.1 Changes since poppler-0.7.0-53: --- 0 files changed --- ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] 4 commits - CMakeLists.txt configure.ac msvc/config.h NEWS qt4/demos qt4/src qt4/tests
CMakeLists.txt|2 +- NEWS | 15 +++ configure.ac |2 +- msvc/config.h |6 +++--- qt4/demos/Makefile.am |3 +++ qt4/src/Doxyfile |2 +- qt4/src/Makefile.am |5 - qt4/tests/Makefile.am |3 +++ 8 files changed, 31 insertions(+), 7 deletions(-) New commits: commit 4254f1237ebed09b8e1c85f935a20bde3d8f36ff Merge: ed6c0c2... 0569ae7... Author: Albert Astals Cid <[EMAIL PROTECTED]> Date: Wed Feb 27 20:44:27 2008 +0100 Merge branch 'master' of ssh://[EMAIL PROTECTED]/git/poppler/poppler commit ed6c0c260837a0025279765ef7778b83d6ee2209 Author: Albert Astals Cid <[EMAIL PROTECTED]> Date: Wed Feb 27 20:43:45 2008 +0100 fix build and distcheck with autools diff --git a/qt4/demos/Makefile.am b/qt4/demos/Makefile.am index 6e22288..805f8a1 100644 --- a/qt4/demos/Makefile.am +++ b/qt4/demos/Makefile.am @@ -60,3 +60,6 @@ toc.$(OBJEXT): toc.moc viewer.$(OBJEXT): viewer.moc poppler_qt4viewer_LDADD = $(LDADDS) + +clean-generic: + rm *.moc \ No newline at end of file diff --git a/qt4/src/Makefile.am b/qt4/src/Makefile.am index 10310a1..444882f 100644 --- a/qt4/src/Makefile.am +++ b/qt4/src/Makefile.am @@ -65,4 +65,7 @@ libpoppler_qt4_la_LDFLAGS = -version-info 2:0:0 .h.moc: moc -i $< -o $@ -poppler-optcontent.$(OBJEXT): poppler-optcontent.moc +poppler-optcontent.lo: poppler-optcontent.moc + +clean-generic: + rm *.moc diff --git a/qt4/tests/Makefile.am b/qt4/tests/Makefile.am index 3ad4aac..5072fcf 100644 --- a/qt4/tests/Makefile.am +++ b/qt4/tests/Makefile.am @@ -55,6 +55,9 @@ stress_poppler_dir_SOURCES = \ stress_poppler_dir_LDADD = $(LDADDS) +clean-generic: + rm *.moc + if BUILD_POPPLER_QT4 TESTS = \ check_attachments \ commit 344d55539b1b6bcabec609fd828db372a07491b4 Author: Albert Astals Cid <[EMAIL PROTECTED]> Date: Wed Feb 27 20:43:13 2008 +0100 fill the NEWS for 0.7.1 diff --git a/NEWS b/NEWS index 90f6b96..486d039 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,18 @@ +Release 0.7.1 (0.8 Beta 2) + + Major Changes: +* Really distribute CMake files as optional build tool +* Initial Optional Content support in core and in the Qt4 frontend + + Minor Changes: +* Allow grouped checkboxes to be selected individually +* Qt4 demo program improvements +* Keep cairo and cairo_shape consistent +* Safety checks on Splash renderer so that it does not draw outside the allocated bitmap +* Do not try to display bitmaps of invalid size +* Fix building with exceptions +* Improvements for building with MSVC and CMake + Release 0.7.0 (0.8 Beta 1) * Saving support commit 1c47633ba782021978fa34d41a4ab0badf3af9d3 Author: Albert Astals Cid <[EMAIL PROTECTED]> Date: Wed Feb 27 20:42:55 2008 +0100 Increase version number to 0.7.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index b97b595..0aff96d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ find_package(PkgConfig) include(MacroEnsureVersion) include(MacroBoolTo01) -set(POPPLER_VERSION "0.7.0") +set(POPPLER_VERSION "0.7.1") # command line switches option(ENABLE_XPDF_HEADERS "Install unsupported xpdf headers." OFF) diff --git a/configure.ac b/configure.ac index b34cd45..b871c92 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.59) -AC_INIT(poppler, 0.7.0) +AC_INIT(poppler, 0.7.1) AM_INIT_AUTOMAKE([foreign]) AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(poppler/poppler-config.h) diff --git a/msvc/config.h b/msvc/config.h index 2ef6087..7451df6 100644 --- a/msvc/config.h +++ b/msvc/config.h @@ -32,13 +32,13 @@ #define PACKAGE_NAME "poppler" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "poppler 0.7" +#define PACKAGE_STRING "poppler 0.7.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "poppler" /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.7" +#define PACKAGE_VERSION "0.7.1" /* Poppler data dir */ #define POPPLER_DATADIR "/usr/local/share/poppler" @@ -53,7 +53,7 @@ /* #undef USE_EXCEPTIONS */ /* Version number of package */ -#define VERSION "0.7" +#define VERSION "0.7.1" #define snprintf _snprintf #define unlink _unlink diff --git a/qt4/src/Doxyfile b/qt4/src/Doxyfile index d6e00c6..07cb570 100644 --- a/qt4/src/Doxyfile +++ b/qt4/src/Doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = "Poppler Qt4 " # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.7.0 +PROJECT_NUMBER = 0.7.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/lis
[poppler] 2 commits - qt4/src
qt4/src/poppler-optcontent.cc |7 +++ 1 file changed, 3 insertions(+), 4 deletions(-) New commits: commit 0569ae76b6af1723b4606af189242a23199f387d Merge: f395531... d8eba8c... Author: Brad Hards <[EMAIL PROTECTED]> Date: Thu Feb 28 06:26:09 2008 +1100 Merge branch 'master' of ssh://[EMAIL PROTECTED]/git/poppler/poppler commit f395531a3e8f71a46b3c942f8f437ade1d9fdb57 Author: Brad Hards <[EMAIL PROTECTED]> Date: Wed Feb 27 22:22:51 2008 +1100 Minor cleanup. diff --git a/qt4/src/poppler-optcontent.cc b/qt4/src/poppler-optcontent.cc index 10a571d..f6e61c1 100644 --- a/qt4/src/poppler-optcontent.cc +++ b/qt4/src/poppler-optcontent.cc @@ -82,9 +82,9 @@ namespace Poppler m_state = OptContentItem::HeadingOnly; } - OptContentItem::OptContentItem() + OptContentItem::OptContentItem() : +m_parent( 0 ) { -m_parent = 0; } OptContentItem::~OptContentItem() @@ -145,6 +145,7 @@ namespace Poppler parseOrderArray( m_rootNode, optContent->getOrderArray() ); } +parseRBGroupsArray( optContent->getRBGroupsArray() ); } OptContentModelPrivate::~OptContentModelPrivate() @@ -212,8 +213,6 @@ namespace Poppler : QAbstractItemModel(parent) { d = new OptContentModelPrivate( this, optContent ); - -d->parseRBGroupsArray( optContent->getRBGroupsArray() ); } OptContentModel::~OptContentModel() ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] 3 commits - qt4/src
qt4/src/poppler-optcontent-private.h |2 ++ qt4/src/poppler-optcontent.cc|8 qt4/src/poppler-optcontent.h | 14 -- 3 files changed, 14 insertions(+), 10 deletions(-) New commits: commit d8eba8c10834116b4f0f295375805172f5216993 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 19:07:46 2008 +0100 export the OptContentModel diff --git a/qt4/src/poppler-optcontent.h b/qt4/src/poppler-optcontent.h index 36f3056..2b0c5ec 100644 --- a/qt4/src/poppler-optcontent.h +++ b/qt4/src/poppler-optcontent.h @@ -22,6 +22,8 @@ #include +#include "poppler-export.h" + class OCGs; namespace Poppler @@ -29,7 +31,7 @@ namespace Poppler class Document; class OptContentModelPrivate; - class OptContentModel : public QAbstractItemModel + class POPPLER_QT4_EXPORT OptContentModel : public QAbstractItemModel { friend class Document; commit 0445e64a4124af7c1b84673f237022e133eb8542 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 19:04:03 2008 +0100 make only the Document able to create OptContentsModel's diff --git a/qt4/src/poppler-optcontent.h b/qt4/src/poppler-optcontent.h index e644ac6..36f3056 100644 --- a/qt4/src/poppler-optcontent.h +++ b/qt4/src/poppler-optcontent.h @@ -26,14 +26,16 @@ class OCGs; namespace Poppler { + class Document; class OptContentModelPrivate; class OptContentModel : public QAbstractItemModel { +friend class Document; + Q_OBJECT public: -OptContentModel( OCGs *optContent, QObject *parent = 0); virtual ~OptContentModel(); QModelIndex index(int row, int column, const QModelIndex &parent) const; @@ -50,6 +52,8 @@ namespace Poppler virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; private: +OptContentModel( OCGs *optContent, QObject *parent = 0); + friend class OptContentModelPrivate; OptContentModelPrivate *d; }; commit c965437b67a4f97ee8365a217bd10406fba3767a Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 18:58:31 2008 +0100 setRootNode() is private (and unused) API diff --git a/qt4/src/poppler-optcontent-private.h b/qt4/src/poppler-optcontent-private.h index 8261839..7471a42 100644 --- a/qt4/src/poppler-optcontent-private.h +++ b/qt4/src/poppler-optcontent-private.h @@ -29,6 +29,7 @@ class OptionalContentGroup; namespace Poppler { + class OptContentItem; class RadioButtonGroup { @@ -91,6 +92,7 @@ namespace Poppler \return the matching optional content item, or null if the reference wasn't found */ OptContentItem *itemFromRef( const QString &ref ) const; +void setRootNode(OptContentItem *node); OptContentModel *q; diff --git a/qt4/src/poppler-optcontent.cc b/qt4/src/poppler-optcontent.cc index 68a44a6..4f3e6d9 100644 --- a/qt4/src/poppler-optcontent.cc +++ b/qt4/src/poppler-optcontent.cc @@ -227,11 +227,11 @@ namespace Poppler delete d; } - void OptContentModel::setRootNode( OptContentItem *node ) + void OptContentModelPrivate::setRootNode(OptContentItem *node) { -delete d->m_rootNode; -d->m_rootNode = node; -reset(); +delete m_rootNode; +m_rootNode = node; +q->reset(); } QModelIndex OptContentModel::index(int row, int column, const QModelIndex &parent) const diff --git a/qt4/src/poppler-optcontent.h b/qt4/src/poppler-optcontent.h index 325a8e4..e644ac6 100644 --- a/qt4/src/poppler-optcontent.h +++ b/qt4/src/poppler-optcontent.h @@ -26,8 +26,6 @@ class OCGs; namespace Poppler { - class OptContentItem; - class OptContentModel; class OptContentModelPrivate; class OptContentModel : public QAbstractItemModel @@ -38,8 +36,6 @@ namespace Poppler OptContentModel( OCGs *optContent, QObject *parent = 0); virtual ~OptContentModel(); -void setRootNode(OptContentItem *node); - QModelIndex index(int row, int column, const QModelIndex &parent) const; QModelIndex parent(const QModelIndex &child) const; ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] 2 commits - qt4/src qt4/tests
qt4/src/poppler-optcontent.cc | 11 ++ qt4/tests/check_optcontent.cpp | 66 ++--- 2 files changed, 27 insertions(+), 50 deletions(-) New commits: commit e293bfc384e2dfc4ef04582053ce18d8c0bcb7b3 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 18:50:35 2008 +0100 small cleanup diff --git a/qt4/src/poppler-optcontent.cc b/qt4/src/poppler-optcontent.cc index 85aaaf6..68a44a6 100644 --- a/qt4/src/poppler-optcontent.cc +++ b/qt4/src/poppler-optcontent.cc @@ -170,7 +170,7 @@ namespace Poppler Object item; orderArray->getNF(i, &item); if (item.isRef() ) { - OptContentItem *ocItem = m_optContentItems[ QString("%1").arg(item.getRefNum()) ]; + OptContentItem *ocItem = m_optContentItems.value(QString::number(item.getRefNum()), 0); if (ocItem) { addChild( parentNode, ocItem ); lastItem = ocItem; @@ -305,9 +305,9 @@ namespace Poppler break; case Qt::CheckStateRole: if (node->state() == OptContentItem::On) { - return qVariantFromValue(Qt::Checked); + return Qt::Checked; } else if (node->state() == OptContentItem::Off) { - return qVariantFromValue(Qt::Unchecked); + return Qt::Unchecked; } break; } @@ -383,10 +383,7 @@ namespace Poppler OptContentItem* OptContentModelPrivate::itemFromRef( const QString &ref ) const { -if ( !m_optContentItems.contains( ref ) ) { - return 0; -} -return m_optContentItems[ ref ]; +return m_optContentItems.value(ref, 0); } OptContentItem* OptContentModelPrivate::nodeFromIndex(const QModelIndex &index, bool canBeNull) const commit f11aa0008585e845ce509172d76f72f941be497d Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 18:44:09 2008 +0100 adapt the tests to the new layout of the contents model diff --git a/qt4/tests/check_optcontent.cpp b/qt4/tests/check_optcontent.cpp index 045ec18..247c67b 100644 --- a/qt4/tests/check_optcontent.cpp +++ b/qt4/tests/check_optcontent.cpp @@ -28,12 +28,10 @@ void TestOptionalContent::checkVisPolicy() QModelIndex index; index = optContent->index( 0, 0, QModelIndex() ); QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "A" ) ); -index = optContent->index( 0, 1, QModelIndex() ); -QCOMPARE( optContent->data( index, Qt::DisplayRole ).toBool(), true ); +QCOMPARE( static_cast( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked ); index = optContent->index( 1, 0, QModelIndex() ); QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "B" ) ); -index = optContent->index( 1, 1, QModelIndex() ); -QCOMPARE( optContent->data( index, Qt::DisplayRole ).toBool(), true ); +QCOMPARE( static_cast( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked ); delete doc; } @@ -51,29 +49,24 @@ void TestOptionalContent::checkNestedLayers() index = optContent->index( 0, 0, QModelIndex() ); QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Black Text and Green Snow" ) ); -index = optContent->index( 0, 1, QModelIndex() ); -QCOMPARE( optContent->data( index, Qt::DisplayRole ).toBool(), false ); +QCOMPARE( static_cast( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Unchecked ); index = optContent->index( 1, 0, QModelIndex() ); QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Mountains and Image" ) ); -index = optContent->index( 1, 1, QModelIndex() ); -QCOMPARE( optContent->data( index, Qt::DisplayRole ).toBool(), true ); +QCOMPARE( static_cast( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked ); // This is a sub-item of "Mountains and Image" QModelIndex subindex = optContent->index( 0, 0, index ); QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QString( "Image" ) ); -subindex = optContent->index( 0, 1, index ); -QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toBool(), true ); +QCOMPARE( static_cast( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked ); index = optContent->index( 2, 0, QModelIndex() ); QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Starburst" ) ); -index = optContent->index( 2, 1, QModelIndex() ); -QCOMPARE( optContent->data( index, Qt::DisplayRole ).toBool(), true ); +QCOMPARE( static_cast( optContent->data( index, Qt::CheckStateRole ).toInt() ), Qt::Checked ); index = optContent->index( 3, 0, QModelIndex() ); QCOMPARE( optContent->data( index, Qt::DisplayRole ).toString(), QString( "Watermark" ) ); -index = optContent->index( 3, 1, QModelIndex() ); -QCOMPARE( optContent->data( index, Qt::DisplayRole ).toBool(), false ); +QCOMPARE( static_cast( optContent->data( index,
[poppler] poppler/Gfx.cc poppler/OptionalContent.cc
poppler/Gfx.cc |2 ++ poppler/OptionalContent.cc |2 ++ 2 files changed, 4 insertions(+) New commits: commit 4a324484b5c77ddc348746e7bcf6051ade28e389 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 18:04:52 2008 +0100 free some objects (thus leak less) diff --git a/poppler/Gfx.cc b/poppler/Gfx.cc index e8d0b1c..0618ab0 100644 --- a/poppler/Gfx.cc +++ b/poppler/Gfx.cc @@ -3460,6 +3460,8 @@ void Gfx::opXObject(Object args[], int numArgs) { // No OC entry - so we proceed as normal } else if (obj2.isRef()) { if ( ! catalog->getOptContentConfig()->optContentIsVisible( &obj2 ) ) { + obj2.free(); + obj1.free(); return; } } else { diff --git a/poppler/OptionalContent.cc b/poppler/OptionalContent.cc index 600c52b..b081add 100644 --- a/poppler/OptionalContent.cc +++ b/poppler/OptionalContent.cc @@ -174,6 +174,7 @@ bool OCGs::optContentIsVisible( Object *dictRef ) dictRef->fetch( m_xref, &dictObj ); if ( ! dictObj.isDict() ) { printf( "Unexpected oc reference target: %i\n", dictObj.getType() ); +dictObj.free(); return result; } dict = dictObj.getDict(); @@ -216,6 +217,7 @@ bool OCGs::optContentIsVisible( Object *dictRef ) } } dictType.free(); + dictObj.free(); // printf("visibility: %s\n", result? "on" : "off"); return result; } ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] 9 commits - qt4/src
qt4/src/.gitignore |2 qt4/src/Makefile.am | 13 ++- qt4/src/poppler-optcontent-private.h |7 + qt4/src/poppler-optcontent.cc| 140 ++- qt4/src/poppler-optcontent.h |2 5 files changed, 104 insertions(+), 60 deletions(-) New commits: commit 0f4e7791ab6884072a1aee56e9cec212d8cea263 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 15:58:21 2008 +0100 ignore any generated .moc here diff --git a/qt4/src/.gitignore b/qt4/src/.gitignore index 53c9077..3d124dd 100644 --- a/qt4/src/.gitignore +++ b/qt4/src/.gitignore @@ -6,4 +6,4 @@ Makefile Makefile.in APIDOCS-html APIDOCS-latex -moc_poppler-optcontent.cpp +*.moc commit 136ae44f155b17d9e8b041b67f75531d8544337c Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 15:56:09 2008 +0100 keep track of the items changed when toggling an item, so we can update them properly diff --git a/qt4/src/poppler-optcontent-private.h b/qt4/src/poppler-optcontent-private.h index f4a4a08..8261839 100644 --- a/qt4/src/poppler-optcontent-private.h +++ b/qt4/src/poppler-optcontent-private.h @@ -35,7 +35,7 @@ namespace Poppler public: RadioButtonGroup( OptContentModelPrivate *ocModel, Array *rbarray); ~RadioButtonGroup(); -void setItemOn( OptContentItem *itemToSetOn ); +QSet setItemOn( OptContentItem *itemToSetOn ); private: QList itemsInGroup; @@ -53,7 +53,7 @@ namespace Poppler QString name() const { return m_name; } ItemState state() const { return m_state; } -bool setState( ItemState state ); +bool setState(ItemState state, QSet &changedItems); QList childList() { return m_children; } diff --git a/qt4/src/poppler-optcontent.cc b/qt4/src/poppler-optcontent.cc index 905fd62..85aaaf6 100644 --- a/qt4/src/poppler-optcontent.cc +++ b/qt4/src/poppler-optcontent.cc @@ -25,6 +25,7 @@ #include "poppler-private.h" #include +#include namespace Poppler { @@ -50,14 +51,18 @@ namespace Poppler { } - void RadioButtonGroup::setItemOn( OptContentItem *itemToSetOn ) + QSet RadioButtonGroup::setItemOn( OptContentItem *itemToSetOn ) { +QSet changedItems; for (int i = 0; i < itemsInGroup.size(); ++i) { OptContentItem *thisItem = itemsInGroup.at(i); if (thisItem != itemToSetOn) { - thisItem->setState( OptContentItem::Off ); +QSet newChangedItems; +thisItem->setState(OptContentItem::Off, newChangedItems); +changedItems += newChangedItems; } } +return changedItems; } @@ -97,9 +102,10 @@ namespace Poppler } - bool OptContentItem::setState( ItemState state ) + bool OptContentItem::setState(ItemState state, QSet &changedItems) { m_state = state; +changedItems.insert(this); if (!m_group) { return false; } @@ -107,7 +113,7 @@ namespace Poppler m_group->setState( OptionalContentGroup::On ); for (int i = 0; i < m_rbGroups.size(); ++i) { RadioButtonGroup *rbgroup = m_rbGroups.at(i); - rbgroup->setItemOn( this ); +changedItems += rbgroup->setItemOn( this ); } } else if ( state == OptContentItem::Off ) { m_group->setState( OptionalContentGroup::Off ); @@ -322,14 +328,30 @@ namespace Poppler const bool newvalue = value.toBool(); if (newvalue) { if (node->state() != OptContentItem::On) { -node->setState(OptContentItem::On); -emit dataChanged(index, index); +QSet changedItems; +node->setState(OptContentItem::On, changedItems); +QModelIndexList indexes; +Q_FOREACH (OptContentItem *item, changedItems) { + indexes.append(d->indexFromItem(item, 0)); +} +qStableSort(indexes); +Q_FOREACH (const QModelIndex &changedIndex, indexes) { + emit dataChanged(changedIndex, changedIndex); +} return true; } } else { if (node->state() != OptContentItem::Off) { -node->setState(OptContentItem::Off); -emit dataChanged(index, index); +QSet changedItems; +node->setState(OptContentItem::Off, changedItems); +QModelIndexList indexes; +Q_FOREACH (OptContentItem *item, changedItems) { + indexes.append(d->indexFromItem(item, 0)); +} +qStableSort(indexes); +Q_FOREACH (const QModelIndex &changedIndex, indexes) { + emit dataChanged(changedIndex, changedIndex); +} return true; } } commit b73e2afef7e5e1b68d82a10c94bca3c201c5f8b3 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 15:52:06 2008 +0100 fix indexFromItem once again, and make parent() call it with the right node diff --git a/qt4/src/poppler-optcontent-private.h b/qt4/src/poppler-optcontent-private.h ind
[poppler] 2 commits - qt4/demos
qt4/demos/documentobserver.cpp |5 + qt4/demos/documentobserver.h |1 + qt4/demos/optcontent.cpp |8 qt4/demos/optcontent.h |3 +++ 4 files changed, 17 insertions(+) New commits: commit 0a19486cb4de57c0c987cc4ce2434a96bbd18338 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 12:15:44 2008 +0100 refresh the current page when the data of the content model change diff --git a/qt4/demos/optcontent.cpp b/qt4/demos/optcontent.cpp index 2f8bebe..e2bc3ae 100644 --- a/qt4/demos/optcontent.cpp +++ b/qt4/demos/optcontent.cpp @@ -44,12 +44,20 @@ void OptContentDock::fillInfo() } m_view->setModel(document()->optionalContentModel()); +connect(m_view->model(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(reloadImage())); +m_view->expandToDepth(1); } void OptContentDock::documentClosed() { +disconnect(m_view->model(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(reloadImage())); m_view->setModel(0); AbstractInfoDock::documentClosed(); } +void OptContentDock::reloadImage() +{ +reloadPage(); +} + #include "optcontent.moc" diff --git a/qt4/demos/optcontent.h b/qt4/demos/optcontent.h index 6189601..3260f29 100644 --- a/qt4/demos/optcontent.h +++ b/qt4/demos/optcontent.h @@ -36,6 +36,9 @@ public: protected: /*virtual*/ void fillInfo(); +private Q_SLOTS: +void reloadImage(); + private: QTreeView *m_view; }; commit 09b7cc2efb7d21fa4dabd23d2d2de877cc7d86ee Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 12:15:18 2008 +0100 optional method to reload the current page diff --git a/qt4/demos/documentobserver.cpp b/qt4/demos/documentobserver.cpp index 611ba79..e5c283d 100644 --- a/qt4/demos/documentobserver.cpp +++ b/qt4/demos/documentobserver.cpp @@ -43,3 +43,8 @@ int DocumentObserver::page() const { return m_viewer->page(); } + +void DocumentObserver::reloadPage() +{ +m_viewer->setPage(m_viewer->page()); +} diff --git a/qt4/demos/documentobserver.h b/qt4/demos/documentobserver.h index c6e287b..38fe204 100644 --- a/qt4/demos/documentobserver.h +++ b/qt4/demos/documentobserver.h @@ -41,6 +41,7 @@ protected: Poppler::Document* document() const; void setPage(int page); int page() const; +void reloadPage(); private: PdfViewer *m_viewer; ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] qt4/demos
qt4/demos/CMakeLists.txt |1 qt4/demos/Makefile.am|3 ++ qt4/demos/optcontent.cpp | 55 +++ qt4/demos/optcontent.h | 43 qt4/demos/viewer.cpp |7 + 5 files changed, 109 insertions(+) New commits: commit 39fe905be8f2ae79d9c26cd87547f3ea2608411e Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 12:00:29 2008 +0100 Add a dock for showing the optional content tree. diff --git a/qt4/demos/CMakeLists.txt b/qt4/demos/CMakeLists.txt index 4fe984f..3401337 100644 --- a/qt4/demos/CMakeLists.txt +++ b/qt4/demos/CMakeLists.txt @@ -17,6 +17,7 @@ set(poppler_qt4viewer_SRCS main_viewer.cpp metadata.cpp navigationtoolbar.cpp + optcontent.cpp pageview.cpp permissions.cpp toc.cpp diff --git a/qt4/demos/Makefile.am b/qt4/demos/Makefile.am index 7014300..6e22288 100644 --- a/qt4/demos/Makefile.am +++ b/qt4/demos/Makefile.am @@ -36,6 +36,8 @@ poppler_qt4viewer_SOURCES = \ metadata.h \ navigationtoolbar.cpp \ navigationtoolbar.h \ + optcontent.cpp \ + optcontent.h\ pageview.cpp\ pageview.h \ permissions.cpp \ @@ -51,6 +53,7 @@ fonts.$(OBJEXT): fonts.moc info.$(OBJEXT): info.moc metadata.$(OBJEXT): metadata.moc navigationtoolbar.$(OBJEXT): navigationtoolbar.moc +optcontent.$(OBJEXT): optcontent.moc pageview.$(OBJEXT): pageview.moc permissions.$(OBJEXT): permissions.moc toc.$(OBJEXT): toc.moc diff --git a/qt4/demos/optcontent.cpp b/qt4/demos/optcontent.cpp new file mode 100644 index 000..2f8bebe --- /dev/null +++ b/qt4/demos/optcontent.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2008, Pino Toscano <[EMAIL PROTECTED]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "optcontent.h" + +#include + +#include + +OptContentDock::OptContentDock(QWidget *parent) +: AbstractInfoDock(parent) +{ +m_view = new QTreeView(this); +setWidget(m_view); +setWindowTitle(tr("Optional content")); +#if QT_VERSION >= 0x040200 +m_view->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); +#endif +} + +OptContentDock::~OptContentDock() +{ +} + +void OptContentDock::fillInfo() +{ +if (!document()->hasOptionalContent()) { +return; +} + +m_view->setModel(document()->optionalContentModel()); +} + +void OptContentDock::documentClosed() +{ +m_view->setModel(0); +AbstractInfoDock::documentClosed(); +} + +#include "optcontent.moc" diff --git a/qt4/demos/optcontent.h b/qt4/demos/optcontent.h new file mode 100644 index 000..6189601 --- /dev/null +++ b/qt4/demos/optcontent.h @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2008, Pino Toscano <[EMAIL PROTECTED]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef OPTCONTENT_H +#define OPTCONTENT_H + +#include "abstractinfodock.h" + +class QTreeView; + +class OptContentDock : public AbstractInfoDock +{ +Q_OBJECT + +public: +OptContentDock(QWidget *parent = 0); +~OptContentDock(); + +/*virtual*/ void documentClosed(); + +protected: +/*virtual*/ void fillInfo(); + +private: +QTreeView *m_view; +}; + +#endif diff --git a/qt4/demos/viewer.cpp b/qt4/demos/viewer.cpp index 7d55e0d..6fb9495 100644 --- a/qt4/demos/viewer.cpp +++ b/qt4/demos/viewer.cpp @@ -23,6 +23,7 @@ #include "info.h" #include "metadata.h" #include "navigationtoolbar.h" +#include "optcontent.h" #include
[poppler] 4 commits - qt4/src
qt4/src/poppler-document.cc |4 +- qt4/src/poppler-optcontent-private.h | 55 +-- qt4/src/poppler-optcontent.cc| 33 ++--- qt4/src/poppler-optcontent.h | 50 --- qt4/src/poppler-private.h|6 +-- 5 files changed, 75 insertions(+), 73 deletions(-) New commits: commit f17dd5539501a996479b903ac9b8aceb3c4cfafe Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 11:53:32 2008 +0100 cleanup diff --git a/qt4/src/poppler-optcontent-private.h b/qt4/src/poppler-optcontent-private.h index 705220e..2462f2a 100644 --- a/qt4/src/poppler-optcontent-private.h +++ b/qt4/src/poppler-optcontent-private.h @@ -24,7 +24,8 @@ #include -#include "goo/GooList.h" +class Array; +class OptionalContentGroup; namespace Poppler { diff --git a/qt4/src/poppler-optcontent.h b/qt4/src/poppler-optcontent.h index 833059c..81dd412 100644 --- a/qt4/src/poppler-optcontent.h +++ b/qt4/src/poppler-optcontent.h @@ -21,11 +21,8 @@ #define POPPLER_OPTCONTENT_H #include -#include -class OptionalContentGroup; class OCGs; -class Array; namespace Poppler { @@ -55,6 +52,7 @@ namespace Poppler Qt::ItemFlags flags ( const QModelIndex & index ) const; private: +friend class OptContentModelPrivate; OptContentModelPrivate *d; }; } commit f3cc894559f10dbd4277fa9f30de9931ed69dfd4 Author: Pino Toscano <[EMAIL PROTECTED]> Date: Wed Feb 27 11:43:34 2008 +0100 OptContentModel::itemFromRef() and OptContentItem are private API. Hide them in the implementation. diff --git a/qt4/src/poppler-optcontent-private.h b/qt4/src/poppler-optcontent-private.h index 1cdafa6..705220e 100644 --- a/qt4/src/poppler-optcontent-private.h +++ b/qt4/src/poppler-optcontent-private.h @@ -22,6 +22,8 @@ #include "poppler-optcontent.h" +#include + #include "goo/GooList.h" namespace Poppler @@ -38,6 +40,38 @@ namespace Poppler QList itemsInGroup; }; + class OptContentItem + { +public: +enum ItemState { On, Off, HeadingOnly }; + +OptContentItem( OptionalContentGroup *group ); +OptContentItem( const QString &label ); +OptContentItem(); +~OptContentItem(); + +QString name() const { return m_name; } +ItemState state() const { return m_state; } +bool setState( ItemState state ); + +QList childList() { return m_children; } + +void setParent( OptContentItem* parent) { m_parent = parent; } +OptContentItem* parent() { return m_parent; } + +void addChild( OptContentItem *child ); + +void appendRBGroup( RadioButtonGroup *rbgroup ); + +private: +OptionalContentGroup *m_group; +QString m_name; +ItemState m_state; // true for ON, false for OFF +QList m_children; +OptContentItem *m_parent; +QList m_rbGroups; + }; + class OptContentModelPrivate { public: @@ -47,6 +81,15 @@ namespace Poppler void parseRBGroupsArray( Array *rBGroupArray ); OptContentItem *nodeFromIndex( const QModelIndex &index ) const; +/** + Get the OptContentItem corresponding to a given reference value. + + \param ref the reference number (e.g. from Object.getRefNum()) to look up + + \return the matching optional content item, or null if the reference wasn't found +*/ +OptContentItem *itemFromRef( const QString &ref ) const; + OptContentModel *q; QMap m_optContentItems; diff --git a/qt4/src/poppler-optcontent.cc b/qt4/src/poppler-optcontent.cc index 79b96f4..10a571d 100644 --- a/qt4/src/poppler-optcontent.cc +++ b/qt4/src/poppler-optcontent.cc @@ -37,7 +37,7 @@ namespace Poppler if ( ! ref.isRef() ) { qDebug() << "expected ref, but got:" << ref.getType(); } - OptContentItem *item = ocModel->q->itemFromRef( QString::number(ref.getRefNum() ) ); + OptContentItem *item = ocModel->itemFromRef( QString::number(ref.getRefNum() ) ); itemsInGroup.append( item ); } for (int i = 0; i < itemsInGroup.size(); ++i) { @@ -345,12 +345,12 @@ namespace Poppler parent->addChild( child ); } - OptContentItem* OptContentModel::itemFromRef( const QString &ref ) const + OptContentItem* OptContentModelPrivate::itemFromRef( const QString &ref ) const { -if ( ! d->m_optContentItems.contains( ref ) ) { +if ( !m_optContentItems.contains( ref ) ) { return 0; } -return d->m_optContentItems[ ref ]; +return m_optContentItems[ ref ]; } OptContentItem* OptContentModelPrivate::nodeFromIndex( const QModelIndex &index ) const diff --git a/qt4/src/poppler-optcontent.h b/qt4/src/poppler-optcontent.h index 03f1252..833059c 100644 --- a/qt4/src/poppler-optcontent.h +++ b/qt4/src/poppler-optcontent.h @@ -32,39 +32,6 @@ namespace Poppler class OptContentItem; class OptContentModel; class OptContentModelPrivate; - class RadioButtonGroup; - - class OptContentItem - { -public: -enum ItemStat
[poppler] qt4/src
qt4/src/CMakeLists.txt |1 + 1 file changed, 1 insertion(+) New commits: commit 48557da71adb0fe6bd4da2fb32433796a96c3576 Author: Brad Hards <[EMAIL PROTECTED]> Date: Wed Feb 27 19:39:18 2008 +1100 We need to install the optional content header. diff --git a/qt4/src/CMakeLists.txt b/qt4/src/CMakeLists.txt index a57cb1c..4099ab9 100644 --- a/qt4/src/CMakeLists.txt +++ b/qt4/src/CMakeLists.txt @@ -45,6 +45,7 @@ install(FILES poppler-link.h poppler-annotation.h poppler-form.h + poppler-optcontent.h poppler-export.h ${CMAKE_SOURCE_DIR}/qt/poppler-page-transition.h DESTINATION include/poppler/qt4) ___ poppler mailing list poppler@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/poppler