[sdk/kdiff3] /: Drop KParts support
Michael Reeves
null at kde.org
Tue May 2 23:49:42 BST 2023
Git commit f4039346058640b500a5a11093daffa9e6a80834 by Michael Reeves.
Committed on 02/05/2023 at 18:46.
Pushed by mreeves into branch 'master'.
Drop KParts support
Unable to effectivly test this aging code.
M +0 -25 doc/en/index.docbook
M +0 -4 src/CMakeLists.txt
M +24 -40 src/kdiff3.cpp
M +3 -10 src/kdiff3.h
D +0 -281 src/kdiff3_part.cpp
D +0 -74 src/kdiff3_part.h
D +0 -29 src/kdiff3_part.rc
M +15 -19 src/kdiff3_shell.cpp
M +2 -10 src/kdiff3_shell.h
D +0 -39 src/kdiff3part.desktop
M +2 -1 src/pdiff.cpp
https://invent.kde.org/sdk/kdiff3/commit/f4039346058640b500a5a11093daffa9e6a80834
diff --git a/doc/en/index.docbook b/doc/en/index.docbook
index ddf6ab0e..d89d866d 100644
--- a/doc/en/index.docbook
+++ b/doc/en/index.docbook
@@ -1842,31 +1842,6 @@ Other things that are possible, but probably less useful are:
</sect2>
</sect1>
-<sect1 id="kpart">
-<title>Using &kdiff3; as a KPart</title>
-<para>
-&kdiff3; is a KPart. Currently it implements the KParts::ReadOnlyPart interface.
-</para><para>
-It's main use is as difference-viewer in &kdevelop;. &kdevelop; always starts the
-internal difference viewer first. To invoke &kdiff3; press the &RMB;
-on the difference viewer window and select <guimenuitem>Show in KDiff3Part</guimenuitem> from the context menu.
-</para><para>
-&kdiff3; normally requires two complete files as input. When used as part &kdiff3;
-will assume that the input file is a patch-file in the unified format. &kdiff3;
-then retrieves the original filenames from the patch-file. At least one of
-the two files must be available. &kdiff3; will then invoke <command>patch</command> to
-recreate the second file.
-</para><para>
-In &dolphin; you can select a patch-file and select <menuchoice><guimenuitem>Preview
-in</guimenuitem><guisubmenu>KDiff3Part</guisubmenu></menuchoice> item from the context
-menu. Be aware that this won't work if none of the original files are available, and it
-is not reliable if the original file(s) have changed since the patch-file was generated.
-</para><para>
-When run as a part &kdiff3; only provides the a two-file-diff, a very small toolbar
-and menu. Merging or folder comparison are not supported then.
-</para>
-</sect1>
-
<sect1 id="git">
<title>Using &kdiff3; as a &git; Diff and Merging Tool</title>
<para>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aab51c7e..03604baf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,7 +6,6 @@
set(kdiff3part_PART_SRCS
- kdiff3_part.cpp
kdiff3.cpp
directorymergewindow.cpp
merger.cpp
@@ -55,8 +54,6 @@ set_target_properties(kdiff3part PROPERTIES DEFINE_SYMBOL KDIFF3_PART)
target_link_libraries(kdiff3part Qt::PrintSupport KF5::I18n KF5::CoreAddons KF5::Parts KF5::Crash)
target_compile_definitions(kdiff3part PRIVATE -DTRANSLATION_DOMAIN=\"kdiff3\")
-install(TARGETS kdiff3part DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/parts )
-
########### kdiff3 executable ###############
set(kdiff3_SRCS
@@ -98,7 +95,6 @@ install(TARGETS kdiff3 ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
########### install files ###############
install( FILES kdiff3part.desktop DESTINATION ${KDE_INSTALL_KSERVICESDIR} )
-install( FILES kdiff3_part.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/kdiff3part )
install( FILES kdiff3_shell.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/kdiff3 )
install( PROGRAMS org.kde.kdiff3.desktop DESTINATION ${KDE_INSTALL_APPDIR} )
install( FILES org.kde.kdiff3.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
diff --git a/src/kdiff3.cpp b/src/kdiff3.cpp
index e6ea8305..fed7d435 100644
--- a/src/kdiff3.cpp
+++ b/src/kdiff3.cpp
@@ -17,7 +17,6 @@
#include "directorymergewindow.h"
#include "fileaccess.h"
#include "guiutils.h"
-#include "kdiff3_part.h"
#include "kdiff3_shell.h"
#include "mergeresultwindow.h"
#include "optiondialog.h"
@@ -82,33 +81,24 @@ constexpr QLatin1String MAIN_TOOLBAR_NAME = QLatin1String("mainToolBar", sizeof(
KActionCollection* KDiff3App::actionCollection() const
{
- if(m_pKDiff3Shell == nullptr)
- return m_pKDiff3Part->actionCollection();
+ assert(m_pKDiff3Shell != nullptr);
return m_pKDiff3Shell->actionCollection();
}
QStatusBar* KDiff3App::statusBar() const
{
- if(m_pKDiff3Shell == nullptr)
- return nullptr;
+ assert(m_pKDiff3Shell != nullptr);
return m_pKDiff3Shell->statusBar();
}
KToolBar* KDiff3App::toolBar(const QLatin1String& toolBarId) const
{
- if(m_pKDiff3Shell == nullptr)
- return nullptr;
-
+ assert(m_pKDiff3Shell != nullptr);
return m_pKDiff3Shell->toolBar(toolBarId);
}
-bool KDiff3App::isPart() const
-{
- return m_pKDiff3Shell == nullptr;
-}
-
bool KDiff3App::isFileSaved() const
{
return m_bFileSaved;
@@ -122,13 +112,12 @@ bool KDiff3App::isDirComparison() const
/*
Don't call completeInit from here it will be called in KDiff3Shell as needed.
*/
-KDiff3App::KDiff3App(QWidget* pParent, const QString& name, KDiff3Part* pKDiff3Part):
- QMainWindow(pParent) //previously KMainWindow
+KDiff3App::KDiff3App(QWidget* pParent, const QString& name, KDiff3Shell* pKDiff3Shell):
+ QMainWindow(pParent)
{
setWindowFlags(Qt::Widget);
setObjectName(name);
- m_pKDiff3Part = pKDiff3Part;
- m_pKDiff3Shell = qobject_cast<KParts::MainWindow*>(pParent);
+ m_pKDiff3Shell = pKDiff3Shell;
m_pCentralWidget = new QWidget(this);
QVBoxLayout* pCentralLayout = new QVBoxLayout(m_pCentralWidget);
@@ -169,7 +158,7 @@ KDiff3App::KDiff3App(QWidget* pParent, const QString& name, KDiff3Part* pKDiff3P
// Option handling: Only when pParent==0 (no parent)
int argCount = KDiff3Shell::getParser()->optionNames().count() + KDiff3Shell::getParser()->positionalArguments().count();
- bool hasArgs = !isPart() && argCount > 0;
+ bool hasArgs = argCount > 0;
if(hasArgs)
{
QString s;
@@ -317,7 +306,8 @@ KDiff3App::KDiff3App(QWidget* pParent, const QString& name, KDiff3Part* pKDiff3P
///////////////////////////////////////////////////////////////////
// call inits to invoke all other construction parts
- //Warning: Call this before connecting KDiff3App::slotUpdateAvailabilities or calling KXMLGUIClient::setXMLFile
+ // Warning: Call this before connecting KDiff3App::slotUpdateAvailabilities or
+ // calling KXMLGUIClient::setXMLFile or KXMLGUIClient::createGUI
initActions(actionCollection());
initStatusBar();
@@ -332,21 +322,20 @@ KDiff3App::KDiff3App(QWidget* pParent, const QString& name, KDiff3Part* pKDiff3P
showWhiteSpaceCharacters->setEnabled(m_pOptions->m_bShowWhiteSpace);
showLineNumbers->setChecked(m_pOptions->m_bShowLineNumbers);
wordWrap->setChecked(m_pOptions->wordWrapOn());
- if(!isPart())
- {
- /*
- No need to restore window size and position here that is done later.
- See KDiff3App::completeInit
- */
- viewStatusBar->setChecked(m_pOptions->isStatusBarVisable());
- slotViewStatusBar();
- KToolBar* mainToolBar = toolBar(MAIN_TOOLBAR_NAME);
- if(mainToolBar != nullptr)
- {
- mainToolBar->mainWindow()->addToolBar(Qt::TopToolBarArea, mainToolBar);
- }
+ /*
+ No need to restore window size and position here that is done later.
+ See KDiff3App::completeInit
+ */
+ viewStatusBar->setChecked(m_pOptions->isStatusBarVisable());
+ slotViewStatusBar();
+
+ KToolBar* mainToolBar = toolBar(MAIN_TOOLBAR_NAME);
+ if(mainToolBar != nullptr)
+ {
+ mainToolBar->mainWindow()->addToolBar(Qt::TopToolBarArea, mainToolBar);
}
+
slotRefresh();
m_pDirectoryMergeDock = new QDockWidget(i18n("Directory merge"), this);
@@ -533,7 +522,7 @@ void KDiff3App::completeInit(const QString& fn1, const QString& fn2, const QStri
m_bAutoMode = false;
}
- if(!m_bAutoMode && !isPart())
+ if(!m_bAutoMode)
showMainWindow();
g_pProgressDialog->setStayHidden(false);
@@ -650,8 +639,7 @@ void KDiff3App::initActions(KActionCollection* ac)
viewStatusBar->setStatusTip(i18n("Enables/disables the statusbar"));
KStandardAction::keyBindings(this, &KDiff3App::slotConfigureKeys, ac);
QAction* pAction = KStandardAction::preferences(this, &KDiff3App::slotConfigure, ac);
- if(isPart())
- pAction->setText(i18n("Configure KDiff3..."));
+ pAction->setText(i18n("Configure KDiff3..."));
#include "xpm/autoadvance.xpm"
#include "xpm/currentpos.xpm"
@@ -784,11 +772,7 @@ void KDiff3App::saveOptions(KSharedConfigPtr config)
{
if(!m_bAutoMode)
{
- if(!isPart())
- {
- saveWindow(config);
- }
-
+ saveWindow(config);
m_pOptionDialog->saveOptions(std::move(config));
}
}
diff --git a/src/kdiff3.h b/src/kdiff3.h
index f38d9d2d..5bef6842 100644
--- a/src/kdiff3.h
+++ b/src/kdiff3.h
@@ -54,11 +54,7 @@ class QMenu;
class KToolBar;
class KActionCollection;
-namespace KParts {
-class MainWindow;
-}
-
-class KDiff3Part;
+class KDiff3Shell;
class DirectoryMergeWindow;
class DirectoryMergeInfo;
@@ -126,11 +122,9 @@ class KDiff3App: public QMainWindow
public:
/** constructor of KDiff3App, calls all init functions to create the application.
*/
- KDiff3App(QWidget* parent, const QString& name, KDiff3Part* pKDiff3Part);
+ KDiff3App(QWidget* parent, const QString& name, KDiff3Shell* pKDiff3Shell);
~KDiff3App() override;
- [[nodiscard]] bool isPart() const;
-
/** initializes the KActions of the application */
void initActions(KActionCollection*);
@@ -473,8 +467,7 @@ public Q_SLOTS:
bool m_bFinishMainInit = false;
bool m_bLoadFiles = false;
- KDiff3Part* m_pKDiff3Part = nullptr;
- KParts::MainWindow* m_pKDiff3Shell = nullptr;
+ KDiff3Shell* m_pKDiff3Shell = nullptr;
bool m_bAutoFlag = false;
bool m_bAutoMode = false;
bool m_bRecalcWordWrapPosted = false;
diff --git a/src/kdiff3_part.cpp b/src/kdiff3_part.cpp
deleted file mode 100644
index bfbcbed7..00000000
--- a/src/kdiff3_part.cpp
+++ /dev/null
@@ -1,281 +0,0 @@
-// clang-format off
-/*
- * KDiff3 - Text Diff And Merge Tool
- *
- * SPDX-FileCopyrightText: 2002-2011 Joachim Eibl, joachim.eibl at gmx.de
- * SPDX-FileCopyrightText: 2018-2020 Michael Reeves reeves.87 at gmail.com
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-// clang-format on
-
-#include "kdiff3_part.h"
-
-#include "fileaccess.h"
-#include "kdiff3.h"
-#include "Logging.h"
-
-#include <QFile>
-#include <QProcess>
-#include <QTemporaryFile>
-#include <QTextStream>
-
-#include <KAboutData>
-#include <KCrash>
-#include <KLocalizedString>
-#include <KMessageBox>
-#include <KParts/MainWindow>
-
-#include <version.h>
-
-//A bit of a hack but I don't have control over the constructor for KDiff3Part since its a KPart plugin.
-bool KDiff3Part::bNeedInit = true;
-
-K_PLUGIN_FACTORY(KDiff3PartFactory, registerPlugin<KDiff3Part>();)
-
-KDiff3Part::KDiff3Part(QWidget* parentWidget, QObject* parent, const QVariantList& args)
- : KParts::ReadWritePart(parent)
-{
- KCrash::initialize();
- assert(parentWidget);
-
- if(!args.isEmpty())
- {
- const QString widgetName = args[0].toString();
-
- // this should be your custom internal widget
- m_widget = new KDiff3App(parentWidget, widgetName, this);
- }
- else
- m_widget = new KDiff3App(parentWidget, u8"KDiff3Part", this);
-
- // notify the part that this is our internal widget
- setWidget(m_widget);
-
- // create our actions
- //KStandardAction::open(this, &KDiff3Part:fileOpen, actionCollection());
- //KStandardAction::saveAs(this, &KDiff3Part:fileSaveAs, actionCollection());
- //KStandardAction::save(this, &KDiff3Part:save, actionCollection());
-
- setXMLFile("kdiff3_part.rc");
-
- // we are read-write by default
- setReadWrite(true);
-
- // we are not modified since we haven't done anything yet
- setModified(false);
-
- if(bNeedInit)
- m_widget->completeInit();
-}
-
-KDiff3Part::~KDiff3Part()
-{
- //TODO: Is parent check needed?
- if(m_widget != nullptr && qobject_cast<KParts::MainWindow*>(parent()) != nullptr)
- {
- m_widget->saveOptions(KSharedConfig::openConfig());
- }
-}
-
-void KDiff3Part::setReadWrite(bool /*rw*/)
-{
- // ReadWritePart::setReadWrite(rw);
-}
-
-void KDiff3Part::setModified(bool /*modified*/)
-{
- /*
- // get a handle on our Save action and make sure it is valid
- QAction *save = actionCollection()->action(KStandardAction::stdName(KStandardAction::Save));
- if (!save)
- return;
-
- // if so, we either enable or disable it based on the current
- // state
- if (modified)
- save->setEnabled(true);
- else
- save->setEnabled(false);
-
- // in any event, we want our parent to do it's thing
- ReadWritePart::setModified(modified);
-*/
-}
-
-void KDiff3Part::getNameAndVersion(const QString& str, const QString& lineStart, QString& fileName, QString& version)
-{
- if(str.startsWith(lineStart) && fileName.isEmpty())
- {
- //Skip the start string
- int pos = lineStart.length();
- //Skip white space if any after start string.
- while(pos < str.length() && (str[pos] == ' ' || str[pos] == '\t')) ++pos;
- int pos2 = str.length() - 1;
- while(pos2 > pos)
- {
- //skip trailing whitespace
- while(pos2 > pos && str[pos2] != ' ' && str[pos2] != '\t') --pos2;
- fileName = str.mid(pos, pos2 - pos);
- qCDebug(kdiffMain) << "KDiff3Part::getNameAndVersion: fileName = " << fileName;
- //Always fails for cvs output this is a designed failure.
- if(FileAccess(fileName).exists()) break;
- --pos2;
- }
-
- int vpos = str.lastIndexOf("\t", -1);
- if(vpos > 0 && vpos > pos2)
- {
- version = str.mid(vpos + 1);
- while(!version.right(1)[0].isLetterOrNumber())
- version.truncate(version.length() - 1);
- }
- }
-}
-
-bool KDiff3Part::openFile()
-{
- // m_file is always local so we can use QFile on it
- //fprintf(stderr, "KDiff3: %s\n", localFilePath().toLatin1().constData());
- qCDebug(kdiffMain) << "KDiff3Part::openFile(): localFilePath() == " << localFilePath();
- QFile file(localFilePath());
- if(!file.open(QIODevice::ReadOnly))
- return false;
-
- //get version and name
- QTextStream stream(&file);
- QString str;
- QString fileName1;
- QString fileName2;
- QString version1;
- QString version2;
- QStringList errors;
-
- /*
- This assumes use of -u otherwise the patch file may not be recognized.
- Also assumes cvs or diff was used to gernerate the path.
- */
- while(!stream.atEnd() && (fileName1.isEmpty() || fileName2.isEmpty()))
- {
- str = stream.readLine() + '\n';
- getNameAndVersion(str, "---", fileName1, version1);
- getNameAndVersion(str, "+++", fileName2, version2);
- }
-
- file.close();
-
- if(fileName1.isEmpty() && fileName2.isEmpty())
- {
- KMessageBox::error(m_widget, i18n("Could not find files for comparison."));
- return false;
- }
-
- const FileAccess f1(fileName1);
- const FileAccess f2(fileName2);
-
- if(f1.exists() && f2.exists() && fileName1 != fileName2)
- {
- m_widget->slotFileOpen2(errors, fileName1, fileName2, "", "", "", "", "", nullptr);
- return true;
- }
- else if(version1.isEmpty() && f1.exists())
- {
- // Normal patch
- // patch -f -u --ignore-whitespace -i [inputfile] -o [outfile] [patchfile]
- QTemporaryFile tmpFile;
- FileAccess::createTempFile(tmpFile);
- const QString tempFileName = tmpFile.fileName();
- const QString cmd = "patch";
- QStringList args = {"-f", "-u", "--ignore-whitespace", "-i", '"' + localFilePath() + '"',
- "-o", '"' + tempFileName + '"', '"' + fileName1 + '"'};
-
- QProcess process;
- process.start(cmd, args);
- process.waitForFinished(-1);
-
- m_widget->slotFileOpen2(errors, fileName1, tempFileName, "", "",
- "", version2.isEmpty() ? fileName2 : "REV:" + version2 + ':' + fileName2, "", nullptr); // alias names // std::cerr << "KDiff3: f1:" << fileName1.toLatin1() <<"<->"<<tempFileName.toLatin1()<< std::endl;
- }
- else if(version2.isEmpty() && f2.exists())
- {
- // Reverse patch
- // patch -f -u -R --ignore-whitespace -i [inputfile] -o [outfile] [patchfile]
- QTemporaryFile tmpFile;
- FileAccess::createTempFile(tmpFile);
- const QString tempFileName = tmpFile.fileName();
- const QString cmd = "patch";
- const QStringList args = {"-f", "-u", "-R", "--ignore-whitespace", "-i", '"' + localFilePath() + '"',
- "-o", '"' + tempFileName + '"', '"' + fileName2 + '"'};
-
- QProcess process;
- process.start(cmd, args);
- process.waitForFinished(-1);
-
- m_widget->slotFileOpen2(errors, tempFileName, fileName2, "", "",
- version1.isEmpty() ? fileName1 : "REV:" + version1 + ':' + fileName1, "", "", nullptr); // alias name
- }
- else if(!version1.isEmpty() && !version2.isEmpty())
- {
- qCDebug(kdiffMain) << "KDiff3Part::openFile():" << fileName1 << "<->" << fileName2 << "\n";
- // FIXME: Why must this be cvs?
- // Assuming that files are on CVS: Try to get them
- // cvs update -p -r [REV] [FILE] > [OUTPUTFILE]
-
- QTemporaryFile tmpFile1;
- FileAccess::createTempFile(tmpFile1);
- const QString tempFileName1 = tmpFile1.fileName();
- const QString cmd = "cvs";
- QStringList args = {"update", "-p", "-r", version1, '"' + fileName1 + '"'};
- QProcess process1;
-
- process1.setStandardOutputFile(tempFileName1);
- process1.start(cmd, args);
- process1.waitForFinished(-1);
-
- QTemporaryFile tmpFile2;
- FileAccess::createTempFile(tmpFile2);
- QString tempFileName2 = tmpFile2.fileName();
-
- args = QStringList{"update", "-p", "-r", version2, '"' + fileName2 + '"'};
- QProcess process2;
- process2.setStandardOutputFile(tempFileName2);
- process2.start(cmd, args);
- process2.waitForFinished(-1);
-
- m_widget->slotFileOpen2(errors, tempFileName1, tempFileName2, "", "",
- "REV:" + version1 + ':' + fileName1,
- "REV:" + version2 + ':' + fileName2,
- "", nullptr);
-
- qCDebug(kdiffMain) << "KDiff3Part::openFile():" << tempFileName1 << "<->" << tempFileName2 << "\n";
- return true;
- }
- else
- {
- KMessageBox::error(m_widget, i18n("Could not find files for comparison."));
- }
-
- return true;
-}
-
-bool KDiff3Part::saveFile()
-{
- /* // if we aren't read-write, return immediately
- if (isReadWrite() == false)
- return false;
-
- // localFilePath() is always local, so we use QFile
- QFile file(localFilePath());
- if (file.open(IO_WriteOnly) == false)
- return false;
-
- // use QTextStream to dump the text to the file
- QTextStream stream(&file);
- //stream << m_widget->text();
-
- file.close();
- return true;
-*/
- return false; // Not implemented
-}
-
-#include "kdiff3_part.moc"
diff --git a/src/kdiff3_part.h b/src/kdiff3_part.h
deleted file mode 100644
index 2433cf33..00000000
--- a/src/kdiff3_part.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// clang-format off
-/*
- * KDiff3 - Text Diff And Merge Tool
- *
- * SPDX-FileCopyrightText: 2002-2011 Joachim Eibl, joachim.eibl at gmx.de
- * SPDX-FileCopyrightText: 2018-2020 Michael Reeves reeves.87 at gmail.com
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-// clang-format on
-
-#ifndef KDIFF3PART_H
-#define KDIFF3PART_H
-
-#include <kparts/part.h>
-#include <KPluginFactory>
-#include <KParts/ReadWritePart>
-
-class QWidget;
-class KDiff3App;
-
-/**
- * This is a "Part". It that does all the real work in a KPart
- * application.
- *
- * @short Main Part
- * @author Joachim Eibl <joachim.eibl at gmx.de>
- */
-class KDiff3Part : public KParts::ReadWritePart
-{
- Q_OBJECT
-public:
- /**
- * Default constructor
- */
- KDiff3Part(QWidget *parentWidget, QObject *parent, const QVariantList &args );
-
- /**
- * Destructor
- */
- ~KDiff3Part() override;
-
- /**
- * This is a virtual function inherited from KParts::ReadWritePart.
- * A shell will use this to inform this Part if it should act
- * read-only
- */
- void setReadWrite(bool rw) override;
-
- /**
- * Reimplemented to disable and enable Save action
- */
- void setModified(bool modified) override;
-
- static void noInit() { bNeedInit = false; }
-protected:
- /**
- * This must be implemented by each part
- */
- bool openFile() override;
-
- /**
- * This must be implemented by each read-write part
- */
- bool saveFile() override;
-
- static bool bNeedInit;
-private:
- void getNameAndVersion(const QString& str, const QString& lineStart, QString& fileName, QString& version);
- KAboutData createAboutData();
-
- QPointer<KDiff3App> m_widget;
-};
-
-#endif // _KDIFF3PART_H_
diff --git a/src/kdiff3_part.rc b/src/kdiff3_part.rc
deleted file mode 100644
index 24fa0601..00000000
--- a/src/kdiff3_part.rc
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE gui SYSTEM "kpartgui.dtd">
-<!--
-SPDX-FileCopyrightText: 2002-2011 Joachim Eibl, joachim.eibl at gmx.de
-SPDX-FileCopyrightText: 2018-2020 Michael Reeves reeves.87 at gmail.com
-SPDX-License-Identifier: GPL-2.0-or-later
--->
-<gui name="kdiff3_part" version="9">
-<MenuBar>
- <Menu name="movement"><text>&KDiff3</text>
- <Action name="go_top"/>
- <Action name="go_bottom"/>
- <Action name="go_prev_delta"/>
- <Action name="go_next_delta"/>
- <Action name="diff_showwhitespace"/>
- <Action name="diff_showlinenumbers"/>
- <Action name="diff_wordwrap"/>
- <Action name="win_toggle_split_orientation"/>
- <Action name="options_configure"><text>Configure KDiff3</text></Action>
- </Menu>
-</MenuBar>
-<ToolBar name="mainToolBar"><text>KDiff3</text>
- <Action name="go_top"/>
- <Action name="go_bottom"/>
- <Action name="go_prev_delta"/>
- <Action name="go_next_delta"/>
- <Action name="diff_showwhitespace"/>
- <Action name="diff_showlinenumbers"/>
-</ToolBar>
-</gui>
diff --git a/src/kdiff3_shell.cpp b/src/kdiff3_shell.cpp
index 0e0b028f..f42c434c 100644
--- a/src/kdiff3_shell.cpp
+++ b/src/kdiff3_shell.cpp
@@ -11,7 +11,6 @@
#include "kdiff3_shell.h"
#include "compat.h"
#include "kdiff3.h"
-#include "kdiff3_part.h"
#include <QApplication>
#include <QCloseEvent>
@@ -28,22 +27,19 @@
KDiff3Shell::KDiff3Shell(const QString& fn1, const QString& fn2, const QString& fn3)
{
m_bUnderConstruction = true;
- // set the shell's ui resource file
- setXMLFile("kdiff3_shell.rc");
- // and a status bar
- statusBar()->show();
+ m_widget = new KDiff3App(this, u8"KDiff3Part", this);
- //Avoid redudant init call.
- KDiff3Part::noInit();
-
- m_part = new KDiff3Part(this, this, {QVariant(u8"KDiff3Part")});
-
- if(m_part)
+ if(m_widget)
{
- m_widget = qobject_cast<KDiff3App*>(m_part->widget());
+ // set the shell's ui resource file
+ //setXMLFile("kdiff3_shell.rc");
+
+ setupGUI(Default, "kdiff3_shell.rc");
+ // and a status bar
+ statusBar()->show();
// and integrate the part's GUI with the shell's
- createGUI(m_part);
+ //createGUI(m_part);
//toolBar()->setToolButtonStyle( Qt::ToolButtonIconOnly );
// tell the KParts::MainWindow that this is indeed the main widget
@@ -51,6 +47,12 @@ KDiff3Shell::KDiff3Shell(const QString& fn1, const QString& fn2, const QString&
m_widget->completeInit(fn1, fn2, fn3);
chk_connect(m_widget, &KDiff3App::createNewInstance, this, &KDiff3Shell::slotNewInstance);
+
+ // 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;
}
else
{
@@ -64,12 +66,6 @@ KDiff3Shell::KDiff3Shell(const QString& fn1, const QString& fn2, const QString&
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() = default;
diff --git a/src/kdiff3_shell.h b/src/kdiff3_shell.h
index b276d9e3..fb5cd3d8 100644
--- a/src/kdiff3_shell.h
+++ b/src/kdiff3_shell.h
@@ -17,16 +17,9 @@
#include <QPointer>
#include <QString>
-#include <KParts/MainWindow>
+#include <KXmlGuiWindow>
class KToggleAction;
-
-// clang-format off
-namespace KParts {
- class ReadWritePart;
-}
-// clang-format on
-
class KDiff3App;
/**
@@ -36,7 +29,7 @@ class KDiff3App;
* @short Application Shell
* @author Joachim Eibl <joachim.eibl at gmx.de>
*/
-class KDiff3Shell: public KParts::MainWindow
+class KDiff3Shell: public KXmlGuiWindow
{
Q_OBJECT
public:
@@ -69,7 +62,6 @@ class KDiff3Shell: public KParts::MainWindow
void slotNewInstance(const QString& fn1, const QString& fn2, const QString& fn3);
private:
- KParts::ReadWritePart* m_part;
QPointer<KDiff3App> m_widget;
KToggleAction* m_toolbarAction;
diff --git a/src/kdiff3part.desktop b/src/kdiff3part.desktop
deleted file mode 100644
index 6e5bb737..00000000
--- a/src/kdiff3part.desktop
+++ /dev/null
@@ -1,39 +0,0 @@
-[Desktop Entry]
-Name=KDiff3 Part
-Name[bg]=KDiff3 Part
-Name[ca]=Part del KDiff3
-Name[ca at valencia]=Part de KDiff3
-Name[cs]=Komponenta KDiff3
-Name[de]=KDiff3-Komponente
-Name[en_GB]=KDiff3 Part
-Name[eo]=KDiff3-Parto
-Name[es]=Parte de KDiff3
-Name[eu]=KDiff3 atala
-Name[fi]=KDiff3-osa
-Name[fr]=Partie de KDiff3
-Name[ia]=KDiff3Part
-Name[it]=KDiff3 Part
-Name[ka]=KDiff3 Part
-Name[ko]=KDiff3 부분
-Name[nl]=KDiff3 Part
-Name[pl]=Człon KDiff3
-Name[pt]=Componente do KDiff3
-Name[pt_BR]=KDiff3 Part
-Name[ru]=Компонент KDiff3
-Name[sl]=KDiff3 Part
-Name[sv]=Kdiff3-del
-Name[tr]=KDiff3 Kısmı
-Name[uk]=Модуль KDiff3
-Name[x-test]=xxKDiff3 Partxx
-Name[zh_CN]=KDiff3 部件
-ServiceTypes=KParts/ReadOnlyPart,KParts/ReadWritePart
-MimeType=text/x-patch;
-X-KDE-Library=kf5/parts/kdiff3part
-Type=Service
-X-KDE-PluginInfo-Name=KDiff3Part
-X-KDE-PluginInfo-License=GPLv2
-X-KDE-PluginInfo-Description= A KPart for displaying diffs
-X-KDE-PluginInfo-Authors=Joachim Eibl;Michael Reeves
-X-KDE-PluginInfo-Emails=joachim.eibl at gmx.de;reeves.87 at gmail.com
-X-KDE-PluginInfo-Version=1.10.70
-
diff --git a/src/pdiff.cpp b/src/pdiff.cpp
index aaa97655..f3070141 100644
--- a/src/pdiff.cpp
+++ b/src/pdiff.cpp
@@ -15,6 +15,7 @@
#include "directorymergewindow.h"
#include "fileaccess.h"
#include "kdiff3.h"
+#include "kdiff3_shell.h"
#include "Logging.h"
#include "optiondialog.h"
#include "progress.h"
@@ -403,7 +404,7 @@ void KDiff3App::mainInit(TotalDiffStatus* pTotalDiffStatus, const InitFlags inFl
m_pMergeWindowFrame->show();
// Try to create a meaningful but not too long caption
- if(!isPart() && mErrors.isEmpty())
+ if(mErrors.isEmpty())
{
createCaption();
}
More information about the kde-doc-english
mailing list