File indexing completed on 2024-04-28 16:26:25
0001 /****************************************************************************************** 0002 date : Sep 12 2004 0003 version : 0.22 0004 copyright : Thomas Fischer (t-fisch@users.sourceforge.net) 0005 restructured, improved and completed by Holger Danielsson 0006 (C) 2004 by Holger Danielsson (holger.danielsson@t-online.de) 0007 *******************************************************************************************/ 0008 0009 /*************************************************************************** 0010 * * 0011 * This program is free software; you can redistribute it and/or modify * 0012 * it under the terms of the GNU General Public License as published by * 0013 * the Free Software Foundation; either version 2 of the License, or * 0014 * (at your option) any later version. * 0015 * * 0016 ***************************************************************************/ 0017 0018 #ifndef QUICKDOCUMENTDIALOG_H 0019 #define QUICKDOCUMENTDIALOG_H 0020 0021 #include "kilewizard.h" 0022 0023 #include <QList> 0024 #include <QMap> 0025 0026 class QLabel; 0027 class QLineEdit; 0028 class QPushButton; 0029 class QTabWidget; 0030 class QTreeWidget; 0031 class QTreeWidgetItem; 0032 0033 namespace KileWidget { 0034 class CategoryComboBox; 0035 } 0036 0037 class KComboBox; 0038 0039 namespace KileDialog 0040 { 0041 0042 // some flags to check the results of the input dialog 0043 enum { 0044 qd_CheckNotEmpty = 1, 0045 qd_CheckDocumentClass = 2, 0046 qd_CheckClassOption = 4, 0047 qd_CheckPackage = 8, 0048 qd_CheckPackageOption = 16, 0049 qd_CheckFontsize = 32, 0050 qd_CheckPapersize = 64 0051 }; 0052 0053 class QuickDocument : public Wizard 0054 { 0055 Q_OBJECT 0056 0057 public: 0058 explicit QuickDocument(KConfig *, QWidget *parent = 0, const char *name = 0, const QString &caption = QString()); 0059 ~QuickDocument(); 0060 0061 bool isStandardClass(const QString &classname); 0062 bool isDocumentClass(const QString &name); 0063 bool isDocumentClassOption(const QString &option); 0064 bool isPackage(const QString &package); 0065 bool isPackageOption(const QString &package, const QString &option); 0066 0067 private: 0068 KileWidget::CategoryComboBox *m_cbDocumentClass; 0069 KileWidget::CategoryComboBox *m_cbTypefaceSize; 0070 KileWidget::CategoryComboBox *m_cbPaperSize; 0071 KileWidget::CategoryComboBox *m_cbEncoding; 0072 QTreeWidget *m_lvClassOptions; 0073 QTreeWidget *m_lvPackages; 0074 QLineEdit *m_leAuthor; 0075 QLineEdit *m_leTitle; 0076 QLineEdit *m_leDate; 0077 QLabel *m_lbPaperSize; 0078 0079 QString m_currentClass; 0080 QString m_currentFontsize; 0081 QString m_currentPapersize; 0082 QString m_currentEncoding; 0083 bool m_currentHyperref; 0084 QString m_hyperrefdriver; 0085 QString m_hyperrefsetup; 0086 QStringList m_userClasslist; 0087 QStringList m_deleteDocumentClasses; 0088 0089 QMap<QString, QStringList> m_dictDocumentClasses; 0090 QMap<QString, bool> m_dictStandardClasses; 0091 QMap<QString, bool> m_currentDefaultOptions; 0092 QMap<QString, bool> m_currentSelectedOptions; 0093 QMap<QString, bool> m_dictPackagesEditable; 0094 QMap<QString, QString> m_dictPackagesDefaultvalues; 0095 QMap<QString, bool> m_dictHyperrefDriver; 0096 0097 QPushButton *m_btnDocumentClassAdd; 0098 QPushButton *m_btnDocumentClassDelete; 0099 QPushButton *m_btnTypefaceSizeAdd; 0100 QPushButton *m_btnTypefaceSizeDelete; 0101 QPushButton *m_btnPaperSizeAdd; 0102 QPushButton *m_btnPaperSizeDelete; 0103 QPushButton *m_btnEncodingAdd; 0104 QPushButton *m_btnEncodingDelete; 0105 0106 QPushButton *m_btnClassOptionsAdd; 0107 QPushButton *m_btnClassOptionsEdit; 0108 QPushButton *m_btnClassOptionsDelete; 0109 QPushButton *m_btnPackagesAdd; 0110 QPushButton *m_btnPackagesAddOption; 0111 QPushButton *m_btnPackagesEdit; 0112 QPushButton *m_btnPackagesDelete; 0113 QPushButton *m_btnPackagesReset; 0114 0115 // GUI 0116 QWidget *setupClassOptions(QTabWidget *tab); 0117 QWidget *setupPackages(QTabWidget *tab); 0118 QWidget *setupProperties(QTabWidget *tab); 0119 0120 // read/write config files and init data 0121 void readConfig(); 0122 void readDocumentClassConfig(); 0123 void readPackagesConfig(); 0124 void initHyperref(); 0125 void writeConfig(); 0126 void writeDocumentClassConfig(); 0127 void writePackagesConfig(); 0128 0129 // document class tab 0130 void initDocumentClass(); 0131 void initStandardClass(const QString &classname, const QString &fontsize, 0132 const QString &papersize, const QString &defaultoptions, 0133 const QString &selectedoptions); 0134 void initStandardOptions(const QString &classname, QStringList &optionlist); 0135 void setDefaultClassOptions(const QString &defaultoptions); 0136 void setSelectedClassOptions(const QString &selectedoptions); 0137 void setClassOptions(const QStringList &list, uint start); 0138 void updateClassOptions(); 0139 QString getClassOptions(); 0140 void fillDocumentClassCombobox(); 0141 void fillCombobox(KileWidget::CategoryComboBox *combo, const QString &cslist, const QString &seltext); 0142 bool addComboboxEntries(KileWidget::CategoryComboBox *combo, const QString &title, const QString &entry); 0143 QString getComboxboxList(KComboBox *combo); 0144 0145 bool isDefaultClassOption(const QString &option); 0146 bool isSelectedClassOption(const QString &option); 0147 QString stripDefault(const QString &s); 0148 0149 // packages tab 0150 void initPackages(); 0151 bool readPackagesListview(); 0152 QTreeWidgetItem *insertTreeWidget(QTreeWidget *treeWidget, 0153 const QString &entry, 0154 const QString &description); 0155 QTreeWidgetItem *insertTreeWidget(QTreeWidgetItem *parent, 0156 const QString &entry, 0157 const QString &description); 0158 QTreeWidgetItem *insertEditableTreeWidget(QTreeWidgetItem *parent, 0159 const QString &entry, 0160 const QString &description, 0161 const QString &value, 0162 const QString &defaultvalue); 0163 bool isTreeWidgetEntry(QTreeWidget *treeWidget, const QString &entry); 0164 void setPackagesValue(QTreeWidgetItem *item, const QString &option, const QString &val); 0165 QString getPackagesValue(const QString &value); 0166 0167 bool isTreeWidgetChild(QTreeWidget *treeWidget, const QString &entry, const QString &option); 0168 QString addPackageDefault(const QString &option, const QString &description); 0169 QString stripPackageDefault(const QString &option, const QString &description); 0170 bool isHyperrefDriver(const QString &name); 0171 0172 // document template 0173 void printTemplate(); 0174 void printPackages(); 0175 void printHyperref(); 0176 void printBeamerTheme(); 0177 0178 // input dialog 0179 bool inputDialog(QStringList &list, int check = qd_CheckNotEmpty); 0180 0181 private Q_SLOTS: 0182 void slotDocumentClassAdd(); 0183 void slotDocumentClassDelete(); 0184 void slotDocumentClassChanged(int index); 0185 void slotTypefaceSizeAdd(); 0186 void slotTypefaceSizeDelete(); 0187 void slotPaperSizeAdd(); 0188 void slotPaperSizeDelete(); 0189 void slotOptionDoubleClicked(QTreeWidgetItem *item, int column); 0190 void slotClassOptionAdd(); 0191 void slotClassOptionEdit(); 0192 void slotClassOptionDelete(); 0193 0194 void slotCheckParent(QTreeWidgetItem *item); 0195 void slotPackageDoubleClicked(QTreeWidgetItem *item); 0196 void slotPackageAdd(); 0197 void slotPackageAddOption(); 0198 void slotPackageEdit(); 0199 void slotPackageDelete(); 0200 void slotPackageReset(); 0201 0202 void slotEnableButtons(); 0203 void slotAccepted(); 0204 }; 0205 0206 class QuickDocumentInputDialog : public QDialog { 0207 Q_OBJECT 0208 public: 0209 explicit QuickDocumentInputDialog(const QStringList &list, int check = 0, 0210 QuickDocument *parent = 0, const char *name = 0); 0211 ~QuickDocumentInputDialog(); 0212 0213 void getResults(QStringList &list); 0214 0215 private: 0216 QuickDocument *m_parent; 0217 int m_check; 0218 0219 QStringList m_description; 0220 QList<QWidget*> m_objectlist; 0221 0222 QString getPackageName(const QString &text); 0223 bool checkListEntries(const QString &title, const QString &textlist, const QString &pattern); 0224 0225 protected Q_SLOTS: 0226 void slotAccepted(); 0227 }; 0228 0229 } // namespace 0230 0231 #endif