File indexing completed on 2024-04-28 05:49:36
0001 /* 0002 SPDX-FileCopyrightText: 2022 Waqar Ahmed <waqar.17a@gmail.com> 0003 SPDX-License-Identifier: MIT 0004 */ 0005 #pragma once 0006 0007 #include "kateprivate_export.h" 0008 0009 #include <QString> 0010 #include <QUrl> 0011 #include <QWidgetList> 0012 0013 QT_BEGIN_NAMESPACE 0014 class QScrollBar; 0015 class QAction; 0016 class QFont; 0017 class QIcon; 0018 class QVariant; 0019 class QWidget; 0020 typedef QMap<QString, QVariant> QVariantMap; 0021 QT_END_NAMESPACE 0022 0023 namespace KTextEditor 0024 { 0025 class View; 0026 class Document; 0027 class MainWindow; 0028 class Range; 0029 class Cursor; 0030 } 0031 class DiagnosticsProvider; 0032 struct DiffParams; 0033 0034 enum MessageType { 0035 Log = 0, 0036 Info, 0037 Warning, 0038 Error, 0039 }; 0040 0041 namespace Utils 0042 { 0043 0044 // A helper class that maintains scroll position 0045 struct KATE_PRIVATE_EXPORT KateScrollBarRestorer { 0046 explicit KateScrollBarRestorer(KTextEditor::View *view); 0047 ~KateScrollBarRestorer(); 0048 0049 void restore(); 0050 0051 private: 0052 class KateScrollBarRestorerPrivate *const d = nullptr; 0053 }; 0054 0055 /** 0056 * returns the current active global font 0057 */ 0058 KATE_PRIVATE_EXPORT QFont editorFont(); 0059 0060 /** 0061 * Returns the range that is currently visible in the @p view 0062 */ 0063 KATE_PRIVATE_EXPORT KTextEditor::Range getVisibleRange(KTextEditor::View *view); 0064 0065 /** 0066 * @brief Given path "/home/user/xyz.txt" returns "xyz.txt" 0067 */ 0068 KATE_PRIVATE_EXPORT inline QString fileNameFromPath(const QString &path) 0069 { 0070 int lastSlash = path.lastIndexOf(QLatin1Char('/')); 0071 return lastSlash == -1 ? path : path.mid(lastSlash + 1); 0072 } 0073 0074 /** 0075 * Return a matching icon for the given document. 0076 * We use the mime type icon for unmodified stuff and the modified one for modified docs. 0077 * @param doc document to get icon for 0078 * @return icon, always valid 0079 */ 0080 KATE_PRIVATE_EXPORT QIcon iconForDocument(KTextEditor::Document *doc); 0081 0082 KATE_PRIVATE_EXPORT QAction *toolviewShowAction(KTextEditor::MainWindow *, const QString &toolviewName); 0083 0084 KATE_PRIVATE_EXPORT QWidget *toolviewForName(KTextEditor::MainWindow *, const QString &toolviewName); 0085 0086 /*** BEGIN KTextEditor::MainWindow extensions **/ 0087 KATE_PRIVATE_EXPORT void 0088 showMessage(const QString &message, const QIcon &icon, const QString &category, MessageType type, KTextEditor::MainWindow *mainWindow = nullptr); 0089 KATE_PRIVATE_EXPORT void showMessage(const QVariantMap &map, KTextEditor::MainWindow *mainWindow = nullptr); 0090 0091 KATE_PRIVATE_EXPORT void showDiff(const QByteArray &diff, const DiffParams ¶ms, KTextEditor::MainWindow *mainWindow); 0092 0093 KATE_PRIVATE_EXPORT void addWidget(QWidget *widget, KTextEditor::MainWindow *mainWindow); 0094 KATE_PRIVATE_EXPORT void activateWidget(QWidget *widget, KTextEditor::MainWindow *mainWindow); 0095 /// @returns list of document area widgets that are not KTextEditor::Views (added by addWidget() 0096 /// TODO: Maybe it would be more versatile to return *all* widgets, including KTextEditor::Views, here, or perhaps 0097 /// controlled by a flag to filter which widgets to return. Think e.g. about the document switching plugin. 0098 /// activeWidget() (not yet "public") uses those semantics, already. 0099 KATE_PRIVATE_EXPORT QWidgetList widgets(KTextEditor::MainWindow *mainWindow); 0100 0101 KATE_PRIVATE_EXPORT void insertWidgetInStatusbar(QWidget *widget, KTextEditor::MainWindow *mainWindow); 0102 0103 KATE_PRIVATE_EXPORT void addPositionToHistory(const QUrl &url, KTextEditor::Cursor c, KTextEditor::MainWindow *mainWindow); 0104 /*** END KTextEditor::MainWindow extensions **/ 0105 0106 /** 0107 * Returns project base dir for provided document 0108 */ 0109 KATE_PRIVATE_EXPORT QString projectBaseDirForDocument(KTextEditor::Document *doc); 0110 0111 /** 0112 * Returns project map for provided document 0113 */ 0114 KATE_PRIVATE_EXPORT QVariantMap projectMapForDocument(KTextEditor::Document *doc); 0115 0116 /** 0117 * Convert an url to a xxx.yyy @ dir representation, used e.g. in the window title 0118 */ 0119 KATE_PRIVATE_EXPORT QString niceFileNameWithPath(const QUrl &url); 0120 }