File indexing completed on 2024-04-28 16:26:23

0001 /***************************************************************************
0002   Copyright (C) 2003 by Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)
0003             (C) 2015 by Andreas Cord-Landwehr (cordlandwehr@kde.org)
0004  ***************************************************************************/
0005 
0006 /***************************************************************************
0007  *                                                                         *
0008  *   This program is free software; you can redistribute it and/or modify  *
0009  *   it under the terms of the GNU General Public License as published by  *
0010  *   the Free Software Foundation; either version 2 of the License, or     *
0011  *   (at your option) any later version.                                   *
0012  *                                                                         *
0013  ***************************************************************************/
0014 
0015 #ifndef PROJECTDIALOGS_H
0016 #define PROJECTDIALOGS_H
0017 
0018 #include <QDialog>
0019 #include <QCheckBox>
0020 #include <QLineEdit>
0021 #include <KUrlRequester>
0022 #include <KLineEdit>
0023 
0024 #include "kileextensions.h"
0025 #include "kileproject.h"
0026 #include "templates.h"
0027 
0028 class QComboBox;
0029 class QGridLayout;
0030 class QGroupBox;
0031 class QLabel;
0032 
0033 class KileProject;
0034 class TemplateItem;
0035 class TemplateIconView;
0036 
0037 namespace KileDocument {
0038 class Extensions;
0039 }
0040 namespace KileTemplate {
0041 class Manager;
0042 }
0043 
0044 class KileProjectDialogBase : public QDialog
0045 {
0046     Q_OBJECT
0047 
0048 public:
0049     KileProjectDialogBase(const QString &caption, KileDocument::Extensions *extensions, QWidget *parent = Q_NULLPTR, const char * name = Q_NULLPTR);
0050     virtual ~KileProjectDialogBase();
0051 
0052     void setProject(KileProject *project, bool override);
0053     virtual KileProject * project();
0054 
0055     void setProjectTitle(const QString &title)
0056     {
0057         m_title->setText(title);
0058     }
0059     QString projectTitle() const
0060     {
0061         return m_title->text();
0062     }
0063 
0064     void setExtensions(KileProjectItem::Type type, const QString &ext);
0065     QString extensions(KileProjectItem::Type type) const
0066     {
0067         return m_val_extensions[type-1];
0068     }
0069 
0070 protected Q_SLOTS:
0071     virtual void fillProjectDefaults();
0072     virtual void onExtensionsIndexChanged(int index);
0073     virtual void onExtensionsTextEdited(const QString &text);
0074 
0075 protected:
0076     KileDocument::Extensions *m_extmanager;
0077     KileProject *m_project;
0078 
0079     QGroupBox *m_projectGroup;
0080     QGroupBox *m_extensionGroup;
0081     KUrlRequester *m_projectFolder;
0082 
0083     QLineEdit *m_title, *m_userFileExtensions;
0084     QLabel *m_defaultLatexFileExtensions;
0085 
0086     QComboBox *m_defaultLatexFileExtensionsCombo;
0087     QComboBox *m_defaultGraphicsExtensionCombo;
0088 
0089     QString m_val_extensions[KileProjectItem::Other - 1];
0090     QString m_val_standardExtensions[KileProjectItem::Other - 1];
0091 
0092     bool acceptUserExtensions();
0093 };
0094 
0095 class KileNewProjectDialog : public KileProjectDialogBase
0096 {
0097     Q_OBJECT
0098 
0099 public:
0100     KileNewProjectDialog(KileTemplate::Manager *templateManager, KileDocument::Extensions *extensions, QWidget* parent = Q_NULLPTR, const char* name = Q_NULLPTR);
0101     ~KileNewProjectDialog();
0102 
0103     KileProject *project() Q_DECL_OVERRIDE;
0104 
0105     QString cleanProjectFile();
0106     QString folder() const {
0107         return m_projectFolder->lineEdit()->text();
0108     }
0109 
0110     TemplateItem* getSelection() const;
0111     QString file() const {
0112         return m_file->text();
0113     }
0114     bool createNewFile() const {
0115         return m_createNewFileCheckbox->isChecked();
0116     }
0117 
0118 private Q_SLOTS:
0119     void clickedCreateNewFileCb();
0120     void fillProjectDefaults() Q_DECL_OVERRIDE;
0121     void handleOKButtonClicked();
0122 
0123 private:
0124     bool testDirectoryIsUsable(const QString& path);
0125     bool testDirectoryIsUsable(const QDir& dir);
0126 
0127     KileTemplate::Manager *m_templateManager;
0128     QLineEdit *m_file, *m_name;
0129     TemplateIconView *m_templateIconView;
0130     QCheckBox *m_createNewFileCheckbox;
0131     QLabel *m_filenameLabel;
0132     QUrl m_projectFileWithPath;
0133 };
0134 
0135 class KileProjectOptionsDialog : public KileProjectDialogBase
0136 {
0137     Q_OBJECT
0138 
0139 public:
0140     KileProjectOptionsDialog(KileProject *project, KileDocument::Extensions *extensions, QWidget *parent = Q_NULLPTR, const char * name = Q_NULLPTR);
0141     ~KileProjectOptionsDialog();
0142 
0143 private Q_SLOTS:
0144     void toggleMakeIndex(bool);
0145     void onAccepted();
0146 
0147 private:
0148     KComboBox *m_selectMasterDocumentCombo, *m_QuickBuildCheckbox;
0149     QLineEdit *m_leMakeIndex;
0150     QCheckBox *m_ckMakeIndex;
0151     QString m_toolDefaultString;
0152 };
0153 
0154 #endif