diff options
Diffstat (limited to 'tdeparts/tests/ghostview.cpp')
-rw-r--r-- | tdeparts/tests/ghostview.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/tdeparts/tests/ghostview.cpp b/tdeparts/tests/ghostview.cpp new file mode 100644 index 000000000..5d1bbe5b3 --- /dev/null +++ b/tdeparts/tests/ghostview.cpp @@ -0,0 +1,119 @@ +#include <kiconloader.h> +#include <kstandarddirs.h> +#include <kapplication.h> +#include <kaction.h> +#include <klocale.h> +#include <kfiledialog.h> +#include <kmessagebox.h> +#include <kcmdlineargs.h> +#include <klibloader.h> + +#include <tqwidget.h> +#include <tqdir.h> +#include <tqfile.h> + +#include <ktrader.h> + +#include "ghostview.h" + +Shell::Shell() +{ + setXMLFile( "ghostviewtest_shell.rc" ); + + KAction * paOpen = new KAction( "&Open file" , "fileopen", 0, this, + TQT_SLOT( slotFileOpen() ), actionCollection(), "file_open" ); + + KAction * paQuit = new KAction( "&Quit" , "exit", 0, this, TQT_SLOT( close() ), actionCollection(), "file_quit" ); + + // Try to find a postscript component first + KTrader::OfferList offers = KTrader::self()->query("application/postscript", "('KParts/ReadOnlyPart' in ServiceTypes) or ('Browser/View' in ServiceTypes)"); + + KLibFactory *factory = 0; + m_gvpart = 0; + KTrader::OfferList::Iterator it(offers.begin()); + for( ; it != offers.end(); ++it) + { + KService::Ptr ptr = (*it); + + factory = KLibLoader::self()->factory( TQFile::encodeName(ptr->library()) ); + if (factory) + { + m_gvpart = static_cast<KParts::ReadOnlyPart *>(factory->create(this, ptr->name().latin1(), "KParts::ReadOnlyPart")); + setCentralWidget( m_gvpart->widget() ); + // Integrate its GUI + createGUI( m_gvpart ); + + break; + } + } + + // if we couldn't find a component with the trader, try the + // kghostview library directly. if this ever happens, then something + // is seriously screwed up, though -- the kghostview component + // should be picked up by the trader + if (!m_gvpart) + { + factory = KLibLoader::self()->factory( "libkghostview" ); + if (factory) + { + // Create the part + m_gvpart = (KParts::ReadOnlyPart *)factory->create( this, "kgvpart", + "KParts::ReadOnlyPart" ); + // Set the main widget + setCentralWidget( m_gvpart->widget() ); + // Integrate its GUI + createGUI( m_gvpart ); + } + else + { + KMessageBox::error(this, "No libkghostview found !"); + } + } + // Set a reasonable size + resize( 600, 350 ); +} + +Shell::~Shell() +{ + delete m_gvpart; +} + +void Shell::openURL( const KURL & url ) +{ + m_gvpart->openURL( url ); +} + +void Shell::slotFileOpen() +{ + KURL url = KFileDialog::getOpenURL( TQString::null, "*.ps|Postscript files (*.ps)", 0L, "file dialog" ); + + if( !url.isEmpty() ) + openURL( url ); +} + +static KCmdLineOptions options[] = +{ + { "+file(s)", "Files to load", 0 }, + KCmdLineLastOption +}; +static const char version[] = "v0.0.1 2000 (c) David Faure"; +static const char description[] = "This is a test shell for the kghostview part."; + +int main( int argc, char **argv ) +{ + TDECmdLineArgs::init(argc, argv, "ghostviewtest", description, version); + TDECmdLineArgs::addCmdLineOptions( options ); // Add my own options. + TDEApplication app; + TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); + Shell *shell = new Shell; + if ( args->count() == 1 ) + { + // Allow full paths, but also simple filenames from current dir + KURL url( TQDir::currentDirPath()+"/", args->arg(0) ); + shell->openURL( url ); + } + shell->show(); + return app.exec(); +} + +#include "ghostview.moc" |