diff kdiff3/src/kdiff3_shell.cpp @ 8:86d21651c8db

KDiff3 version 0.9.70
author joachim99
date Mon, 06 Oct 2003 18:50:45 +0000
parents
children efe33e938730
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kdiff3/src/kdiff3_shell.cpp	Mon Oct 06 18:50:45 2003 +0000
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2003 Joachim Eibl <joachim@gmx.de>
+ */
+
+#include "kdiff3_shell.h"
+#include "kdiff3.h"
+
+#include <kkeydialog.h>
+#include <kfiledialog.h>
+#include <kconfig.h>
+#include <kurl.h>
+
+#include <kedittoolbar.h>
+
+#include <kaction.h>
+#include <kstdaction.h>
+
+#include <klibloader.h>
+#include <kmessagebox.h>
+#include <kstatusbar.h>
+#include <klocale.h>
+
+#include <iostream>
+
+KDiff3Shell::KDiff3Shell()
+    : KParts::MainWindow( 0L, "kdiff3" )
+{
+    m_bUnderConstruction = true;
+    // set the shell's ui resource file
+    setXMLFile("kdiff3_shell.rc");
+
+    // and a status bar
+    statusBar()->show();
+
+    // this routine will find and load our Part.  it finds the Part by
+    // name which is a bad idea usually.. but it's alright in this
+    // case since our Part is made for this Shell
+    KLibFactory *factory = KLibLoader::self()->factory("libkdiff3part");
+    if (factory)
+    {
+        // now that the Part is loaded, we cast it to a Part to get
+        // our hands on it
+        m_part = static_cast<KParts::ReadWritePart *>(factory->create(this,
+                                "kdiff3_part", "KParts::ReadWritePart" ));
+
+        if (m_part)
+        {
+            // and integrate the part's GUI with the shell's
+            createGUI(m_part);
+
+            // tell the KParts::MainWindow that this is indeed the main widget
+            setCentralWidget(m_part->widget());
+
+            show();
+
+            ((KDiff3App*)m_part->widget())->completeInit();
+        }
+    }
+    else
+    {
+        // if we couldn't find our Part, we exit since the Shell by
+        // itself can't do anything useful
+        KMessageBox::error(this, i18n("Could not find our part!\n"
+           "This usually happens due to an installation problem. "
+           "Please read the README-file in the source package for details.")
+           );
+        kapp->quit();
+        // we return here, cause kapp->quit() only means "exit the
+        // next time we enter the event loop...
+        return;
+    }
+
+    // apply the saved mainwindow settings, if any, and ask the mainwindow
+    // to automatically save settings if changed: window size, toolbar
+    // position, icon size, etc.
+    setAutoSaveSettings();
+    m_bUnderConstruction = false;
+}
+
+KDiff3Shell::~KDiff3Shell()
+{
+}
+
+bool KDiff3Shell::queryClose()
+{
+   if (m_part)
+      return ((KDiff3App*)m_part->widget())->queryClose();
+   else
+      return true;
+}
+
+bool KDiff3Shell::queryExit()
+{
+   return true;
+}
+
+
+
+
+void KDiff3Shell::optionsShowToolbar()
+{
+    // this is all very cut and paste code for showing/hiding the
+    // toolbar
+    if (m_toolbarAction->isChecked())
+        toolBar()->show();
+    else
+        toolBar()->hide();
+}
+
+void KDiff3Shell::optionsShowStatusbar()
+{
+    // this is all very cut and paste code for showing/hiding the
+    // statusbar
+    if (m_statusbarAction->isChecked())
+        statusBar()->show();
+    else
+        statusBar()->hide();
+}
+
+void KDiff3Shell::optionsConfigureKeys()
+{
+    KKeyDialog::configure(actionCollection(), "kdiff3_shell.rc");
+}
+
+void KDiff3Shell::optionsConfigureToolbars()
+{
+#if defined(KDE_MAKE_VERSION)
+# if KDE_VERSION >= KDE_MAKE_VERSION(3,1,0)
+    saveMainWindowSettings(KGlobal::config(), autoSaveGroup());
+# else
+    saveMainWindowSettings(KGlobal::config() );
+# endif
+#else
+    saveMainWindowSettings(KGlobal::config() );
+#endif
+
+    // use the standard toolbar editor
+    KEditToolbar dlg(factory());
+    connect(&dlg, SIGNAL(newToolbarConfig()),
+            this, SLOT(applyNewToolbarConfig()));
+    dlg.exec();
+}
+
+void KDiff3Shell::applyNewToolbarConfig()
+{
+#if defined(KDE_MAKE_VERSION)
+# if KDE_VERSION >= KDE_MAKE_VERSION(3,1,0)
+    applyMainWindowSettings(KGlobal::config(), autoSaveGroup());
+# else
+    applyMainWindowSettings(KGlobal::config());
+# endif
+#else
+    applyMainWindowSettings(KGlobal::config());
+#endif
+}
+
+#include "kdiff3_shell.moc"