summaryrefslogtreecommitdiffstats
path: root/tdeparts/tests/example.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdeparts/tests/example.cpp')
-rw-r--r--tdeparts/tests/example.cpp135
1 files changed, 135 insertions, 0 deletions
diff --git a/tdeparts/tests/example.cpp b/tdeparts/tests/example.cpp
new file mode 100644
index 000000000..e8495ffe9
--- /dev/null
+++ b/tdeparts/tests/example.cpp
@@ -0,0 +1,135 @@
+
+#include "example.h"
+#include "parts.h"
+#include "notepad.h"
+
+#include <tqsplitter.h>
+#include <tqcheckbox.h>
+#include <tqdir.h>
+
+#include <kiconloader.h>
+#include <kstandarddirs.h>
+#include <kapplication.h>
+#include <kmessagebox.h>
+#include <kaction.h>
+#include <klocale.h>
+
+Shell::Shell()
+{
+ setXMLFile( "tdepartstest_shell.rc" );
+
+ m_manager = new KParts::PartManager( this );
+
+ // When the manager says the active part changes, the builder updates (recreates) the GUI
+ connect( m_manager, TQT_SIGNAL( activePartChanged( KParts::Part * ) ),
+ this, TQT_SLOT( createGUI( KParts::Part * ) ) );
+
+ // We can do this "switch active part" because we have a splitter with
+ // two items in it.
+ // I wonder what tdevelop uses/will use to embed kedit, BTW.
+ m_splitter = new TQSplitter( this );
+
+ m_part1 = new Part1(this, m_splitter);
+ m_part2 = new Part2(this, m_splitter);
+
+ KActionCollection *coll = actionCollection();
+
+ (void)new KAction( "&View local file", 0, this, TQT_SLOT( slotFileOpen() ), coll, "open_local_file" );
+ (void)new KAction( "&View remote file", 0, this, TQT_SLOT( slotFileOpenRemote() ), coll, "open_remote_file" );
+
+ m_paEditFile = new KAction( "&Edit file", 0, this, TQT_SLOT( slotFileEdit() ), coll, "edit_file" );
+ m_paCloseEditor = new KAction( "&Close file editor", 0, this, TQT_SLOT( slotFileCloseEditor() ), coll, "close_editor" );
+ m_paCloseEditor->setEnabled(false);
+ KAction * paQuit = new KAction( "&Quit", 0, this, TQT_SLOT( close() ), coll, "shell_quit" );
+ paQuit->setIconSet(TQIconSet(BarIcon("exit")));
+
+ (void)new KAction( "Yet another menu item", 0, coll, "shell_yami" );
+ (void)new KAction( "Yet another submenu item", 0, coll, "shell_yasmi" );
+
+ setCentralWidget( m_splitter );
+ m_splitter->setMinimumSize( 400, 300 );
+
+ m_splitter->show();
+
+ m_manager->addPart( m_part1, true ); // sets part 1 as the active part
+ m_manager->addPart( m_part2, false );
+ m_editorpart = 0;
+}
+
+Shell::~Shell()
+{
+ disconnect( m_manager, 0, this, 0 );
+}
+
+void Shell::slotFileOpen()
+{
+ if ( ! m_part1->openURL( locate("data", TDEGlobal::instance()->instanceName()+"/tdepartstest_shell.rc" ) ) )
+ KMessageBox::error(this,"Couldn't open file !");
+}
+
+void Shell::slotFileOpenRemote()
+{
+ KURL u ( "http://www.kde.org/index.html" );
+ if ( ! m_part1->openURL( u ) )
+ KMessageBox::error(this,"Couldn't open file !");
+}
+
+void Shell::embedEditor()
+{
+ if ( m_manager->activePart() == m_part2 )
+ createGUI( 0L );
+
+ // replace part2 with the editor part
+ delete m_part2;
+ m_part2 = 0L;
+ m_editorpart = new NotepadPart( m_splitter, "editor",
+ this, "NotepadPart" );
+ m_editorpart->setReadWrite(); // read-write mode
+ m_manager->addPart( m_editorpart );
+ m_paEditFile->setEnabled(false);
+ m_paCloseEditor->setEnabled(true);
+}
+
+void Shell::slotFileCloseEditor()
+{
+ // It is very important to close the url of a read-write part
+ // before destroying it. This allows to save the document (if modified)
+ // and also to cancel.
+ if ( ! m_editorpart->closeURL() )
+ return;
+
+ // Is this necessary ? (David)
+ if ( m_manager->activePart() == m_editorpart )
+ createGUI( 0L );
+
+ delete m_editorpart;
+ m_editorpart = 0L;
+ m_part2 = new Part2(this, m_splitter);
+ m_manager->addPart( m_part2 );
+ m_paEditFile->setEnabled(true);
+ m_paCloseEditor->setEnabled(false);
+}
+
+void Shell::slotFileEdit()
+{
+ if ( !m_editorpart )
+ embedEditor();
+ // TODO use KFileDialog to allow testing remote files
+ if ( ! m_editorpart->openURL( TQDir::current().absPath()+"/tdepartstest_shell.rc" ) )
+ KMessageBox::error(this,"Couldn't open file !");
+}
+
+int main( int argc, char **argv )
+{
+ TDEApplication app( argc, argv, "tdepartstest" );
+
+ Shell *shell = new Shell;
+
+ shell->show();
+
+ app.exec();
+
+ return 0;
+}
+
+#include "example.moc"