summaryrefslogtreecommitdiffstats
path: root/tdeparts/tests/ghostview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdeparts/tests/ghostview.cpp')
-rw-r--r--tdeparts/tests/ghostview.cpp119
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"