File indexing completed on 2024-04-21 15:55:40

0001 /**************************************************************************************
0002     begin                : Thu Jul 17 2003
0003     copyright            : (C) 2003 by Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)
0004                                2007-2011 by Michel Ludwig (michel.ludwig@kdemail.net)
0005  **************************************************************************************/
0006 
0007 /***************************************************************************
0008  *                                                                         *
0009  *   This program is free software; you can redistribute it and/or modify  *
0010  *   it under the terms of the GNU General Public License as published by  *
0011  *   the Free Software Foundation; either version 2 of the License, or     *
0012  *   (at your option) any later version.                                   *
0013  *                                                                         *
0014  ***************************************************************************/
0015 
0016 #ifndef KILEINFO_H
0017 #define KILEINFO_H
0018 
0019 #include <QString>
0020 #include <QMap>
0021 
0022 #include "kiledebug.h"
0023 #include <QUrl>
0024 
0025 #include <KParts/MainWindow>
0026 
0027 #include "kileconstants.h"
0028 #include "kileextensions.h"
0029 #include "kiletoolmanager.h"
0030 #include "kilestdtools.h"
0031 #include "outputinfo.h"
0032 #include "latexcmd.h"
0033 #include "kileconfig.h"
0034 
0035 class QWidget;
0036 
0037 namespace KileDocument {
0038 class Info;
0039 class TextInfo;
0040 }
0041 
0042 class KileErrorHandler;
0043 class KileProject;
0044 class KileProjectItem;
0045 class KileProjectItemList;
0046 
0047 namespace KTextEditor {
0048 class Document;
0049 }
0050 
0051 namespace KileConfiguration {
0052 class Manager;
0053 }
0054 namespace KileDocument {
0055 class Extensions;
0056 class Manager;
0057 class EditorExtension;
0058 }
0059 namespace KileView {
0060 class Manager;
0061 }
0062 namespace KileWidget {
0063 class StructureWidget;
0064 class Konsole;
0065 class ScriptsManagement;
0066 class PreviewWidget;
0067 class ExtendedScrollArea;
0068 class FileBrowserWidget;
0069 class OutputView;
0070 class BottomBar;
0071 }
0072 namespace KileTool {
0073 class QuickPreview;
0074 class LivePreviewManager;
0075 }
0076 namespace KileHelp {
0077 class Help;
0078 }
0079 namespace KileScript {
0080 class Manager;
0081 }
0082 namespace KileEditorKeySequence {
0083 class Manager;
0084 }
0085 namespace KileTemplate {
0086 class Manager;
0087 }
0088 namespace KileCodeCompletion {
0089 class Manager;
0090 }
0091 namespace KileAbbreviation {
0092 class Manager;
0093 }
0094 namespace KileParser {
0095 class Manager;
0096 }
0097 
0098 namespace KileMenu {
0099 class UserMenu;
0100 }
0101 
0102 class EditorCommands;
0103 
0104 class KileInfo
0105 {
0106     friend class KileMainWindow;
0107 
0108 public:
0109     explicit KileInfo(KParts::MainWindow *mainWindow);
0110     virtual ~KileInfo();
0111 
0112 public:
0113     enum {bibinputs = 0,bstinputs, texinputs};
0114     QString getName(KTextEditor::Document *doc = Q_NULLPTR, bool shrt = false) const;
0115     QString getShortName(KTextEditor::Document *doc = Q_NULLPTR) const {
0116         return getName(doc, true);
0117     }
0118     LaTeXOutputHandler* findCurrentLaTeXOutputHandler() const;
0119     QString getCompileNameForProject(KileProject *project, bool shrt = false) const;
0120     QString getCompileName(bool shrt = false, LaTeXOutputHandler** h = Q_NULLPTR) const;
0121     QString getFullFromPrettyName(const OutputInfo& info, const QString& name) const;
0122     QList<QUrl> getParentsFor(KileDocument::Info *);
0123     bool getSinglemode() {
0124         return m_singlemode;
0125     }
0126 
0127     QString getCurrentTarget() const {
0128         return m_currentTarget;
0129     }
0130     void setTarget(const QString &target) {
0131         m_currentTarget=target;
0132     }
0133 
0134     virtual KTextEditor::Document* activeTextDocument() const;
0135 
0136     QString getSelection() const;
0137     void clearSelection() const;
0138 
0139     virtual QStringList allLabels(KileDocument::TextInfo *info = Q_NULLPTR);
0140     virtual QStringList allBibItems(KileDocument::TextInfo *info = Q_NULLPTR);
0141     virtual QStringList allBibliographies(KileDocument::TextInfo *info = Q_NULLPTR);
0142     virtual QStringList allDependencies(KileDocument::TextInfo *info = Q_NULLPTR);
0143     virtual QStringList allNewCommands(KileDocument::TextInfo *info = Q_NULLPTR);
0144     virtual QStringList allAsyFigures(KileDocument::TextInfo *info = Q_NULLPTR);
0145     virtual QStringList allPackages(KileDocument::TextInfo *info = Q_NULLPTR);
0146 
0147     QString lastModifiedFile(KileDocument::TextInfo *info = Q_NULLPTR);
0148 
0149     static QString documentTypeToString(KileDocument::Type type);
0150 
0151     virtual void focusLog() = 0;
0152     virtual void focusOutput() = 0;
0153     virtual void focusKonsole() = 0;
0154     virtual void focusEditor() = 0;
0155     virtual void focusPreview() = 0;
0156 
0157 private:
0158     QStringList retrieveList(QStringList (KileDocument::Info::*getit)() const, KileDocument::TextInfo *docinfo = Q_NULLPTR);
0159 
0160 public:
0161     bool similarOrEqualURL(const QUrl &validurl, const QUrl &testurl);
0162     bool isOpen(const QUrl &url);
0163     inline bool isOpen(const QString& localFile)
0164     {
0165         return isOpen(QUrl::fromLocalFile(localFile));
0166     }
0167     bool projectIsOpen(const QUrl & );
0168 
0169     bool watchFile() {
0170         return m_bWatchFile;
0171     }
0172 
0173     virtual int lineNumber() = 0;
0174 
0175     KileWidget::StructureWidget *structureWidget() {
0176         return m_kwStructure;
0177     }
0178     KileWidget::Konsole *texKonsole() {
0179         return m_texKonsole;
0180     }
0181     KileWidget::OutputView *outputWidget() {
0182         return m_outputWidget;
0183     }
0184     KileWidget::BottomBar *outputView() {
0185         return m_bottomBar;
0186     }
0187     KileWidget::PreviewWidget *previewWidget () {
0188         return m_previewWidget;
0189     }
0190 
0191     KileConfiguration::Manager* configurationManager() const {
0192         return m_configurationManager;
0193     }
0194     KileDocument::Manager* docManager() const {
0195         return m_docManager;
0196     }
0197     KileView::Manager* viewManager() const {
0198         return m_viewManager;
0199     }
0200     KileTool::Manager* toolManager() const {
0201         return m_manager;
0202     }
0203     KileScript::Manager* scriptManager() const {
0204         return m_jScriptManager;
0205     }
0206     KileEditorKeySequence::Manager* editorKeySequenceManager() const {
0207         return m_editorKeySequenceManager;
0208     }
0209     KileTool::Factory* toolFactory() const {
0210         return m_toolFactory;
0211     }
0212     KileDocument::EditorExtension *editorExtension() const {
0213         return m_edit;
0214     }
0215     KileDocument::LatexCommands *latexCommands() const {
0216         return m_latexCommands;
0217     }
0218     KileHelp::Help *help() const {
0219         return m_help;
0220     }
0221     KileTool::QuickPreview *quickPreview() const {
0222         return m_quickPreview;
0223     }
0224     KileTool::LivePreviewManager *livePreviewManager() const {
0225         return m_livePreviewManager;
0226     }
0227     KileDocument::Extensions *extensions() const {
0228         return m_extensions;
0229     }
0230     KileTemplate::Manager *templateManager() const {
0231         return m_templateManager;
0232     }
0233     KileCodeCompletion::Manager *codeCompletionManager() const {
0234         return m_codeCompletionManager;
0235     }
0236     KileAbbreviation::Manager* abbreviationManager() const {
0237         return m_abbreviationManager;
0238     }
0239     KileParser::Manager* parserManager() const {
0240         return m_parserManager;
0241     }
0242     KileErrorHandler* errorHandler() const {
0243         return m_errorHandler;
0244     }
0245     KileMenu::UserMenu *userMenu() const {
0246         return m_userMenu;
0247     }
0248 
0249     //FIXME:refactor
0250     KileWidget::FileBrowserWidget* fileSelector() const {
0251         return m_fileBrowserWidget;
0252     }
0253 
0254     KParts::MainWindow* mainWindow() const {
0255         return m_mainWindow;
0256     }
0257 
0258     static QString expandEnvironmentVars(const QString &variable);
0259     static QString checkOtherPaths(const QString &path,const QString &file, int type);
0260     static QString checkOtherPaths(const QUrl &url,const QString &file, int type) {
0261         return checkOtherPaths(url.toLocalFile(),file, type);
0262     }
0263 
0264     virtual void setLine(const QString &line) = 0;
0265 
0266     QString getMasterDocumentFileName() const {
0267         return m_masterDocumentFileName;
0268     }
0269 
0270 protected:
0271     KParts::MainWindow             *m_mainWindow;
0272     KileConfiguration::Manager     *m_configurationManager;
0273     KileDocument::Manager          *m_docManager;
0274     KileView::Manager              *m_viewManager;
0275     KileTool::Manager              *m_manager;
0276     KileTemplate::Manager          *m_templateManager;
0277     KileScript::Manager            *m_jScriptManager;
0278     KileEditorKeySequence::Manager *m_editorKeySequenceManager;
0279     KileTool::Factory              *m_toolFactory;
0280     KileWidget::Konsole            *m_texKonsole;
0281     KileWidget::OutputView         *m_outputWidget;
0282     KileWidget::ScriptsManagement  *m_scriptsManagementWidget;
0283     KileWidget::BottomBar          *m_bottomBar;
0284     KileWidget::PreviewWidget      *m_previewWidget;
0285     KileWidget::ExtendedScrollArea *m_previewScrollArea;
0286     KileCodeCompletion::Manager    *m_codeCompletionManager;
0287     KileAbbreviation::Manager      *m_abbreviationManager;
0288     KileParser::Manager            *m_parserManager;
0289     KileErrorHandler               *m_errorHandler;
0290 
0291     EditorCommands                 *m_editorCommands;
0292 
0293     KileHelp::Help                 *m_help;
0294     KileDocument::EditorExtension  *m_edit;
0295     KileDocument::LatexCommands    *m_latexCommands;
0296     KileDocument::Extensions       *m_extensions;
0297     KileTool::QuickPreview         *m_quickPreview;
0298     KileMenu::UserMenu             *m_userMenu;
0299     KileTool::LivePreviewManager   *m_livePreviewManager;
0300 
0301     bool                            m_singlemode;
0302     QString                         m_masterDocumentFileName;
0303 
0304     QString                         m_currentTarget;
0305 
0306     bool                            m_bWatchFile;
0307 
0308     KileWidget::StructureWidget    *m_kwStructure;
0309     KileWidget::FileBrowserWidget  *m_fileBrowserWidget;
0310 };
0311 
0312 #endif