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