summaryrefslogtreecommitdiffstats
path: root/src/kile/quickdocumentdialog.h
blob: da41df26154732a167e0594af4ebb58926bf7648 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
/***************************************************************************
date                 : Sep 12 2004
version              : 0.22
copyright            : Thomas Fischer <t-fisch@users.sourceforge.net>
                       restructured, improved and completed by Holger Danielsson
                       (C) 2004 by Holger Danielsson
email                : holger.danielsson@t-online.de
***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KILEDIALOGQUICKDOCHEADER_H
#define KILEDIALOGQUICKDOCHEADER_H

#include <tqmap.h>
#include <tqvaluelist.h>
#include "kilewizard.h"

class KComboBox;
class TQListView;
class TQCheckListItem;
class KLineEdit;
class KPushButton;

namespace KileDialog
{

// some flags to check the results of the input dialog
enum {
	qd_CheckNotEmpty=1,        
	qd_CheckDocumentClass=2,
	qd_CheckClassOption=4,
	qd_CheckPackage=8,
	qd_CheckPackageOption=16,
	qd_CheckFontsize=32,
	qd_CheckPapersize=64
};

class QuickDocument : public Wizard
{
	TQ_OBJECT
  

public:
	QuickDocument(TDEConfig *, TQWidget *parent=0, const char *name=0, const TQString &caption = TQString());
	~QuickDocument();

	bool isStandardClass(const TQString &classname);             
	bool isDocumentClass(const TQString &name);
	bool isDocumentClassOption(const TQString &option);
	bool isPackage(const TQString &package);
	bool isPackageOption(const TQString &package, const TQString &option);
	
public slots:
	void slotOk();

private:
	KComboBox *m_cbDocumentClass;
	KComboBox *m_cbTypefaceSize;
	KComboBox *m_cbPaperSize;
	KComboBox *m_cbEncoding;
	TQListView *m_lvClassOptions;
	TQListView *m_lvPackages;
	KLineEdit *m_leAuthor;
	KLineEdit *m_leTitle;
	KLineEdit *m_leDate;
	TQLabel    *m_lbPaperSize;
	
	TQString m_currentClass;                          
	TQString m_currentFontsize;                      
	TQString m_currentPapersize;       
	TQString m_currentEncoding;     
	bool m_currentHyperref;
	TQString m_hyperrefdriver;
	TQString m_hyperrefsetup;      
	TQStringList m_userClasslist;           
	TQStringList m_deleteDocumentClasses;       
	
	TQMap<TQString,TQStringList> m_dictDocumentClasses; 
	TQMap<TQString,bool> m_dictStandardClasses;    
	TQMap<TQString,bool> m_currentDefaultOptions;   
	TQMap<TQString,bool> m_currentSelectedOptions;   
	TQMap<TQString,bool> m_dictPackagesEditable;   
	TQMap<TQString,TQString> m_dictPackagesDefaultvalues;     
	TQMap<TQString,bool> m_dictHyperrefDriver;   
	
	KPushButton *m_btnDocumentClassAdd;
	KPushButton *m_btnDocumentClassDelete;
	KPushButton *m_btnTypefaceSizeAdd;
	KPushButton *m_btnTypefaceSizeDelete;
	KPushButton *m_btnPaperSizeAdd;
	KPushButton *m_btnPaperSizeDelete;
	KPushButton *m_btnEncodingAdd;
	KPushButton *m_btnEncodingDelete;
	
	KPushButton *m_btnClassOptionsAdd;
	KPushButton *m_btnClassOptionsEdit;
	KPushButton *m_btnClassOptionsDelete;
	KPushButton *m_btnPackagesAdd;
	KPushButton *m_btnPackagesAddOption;
	KPushButton *m_btnPackagesEdit;
	KPushButton *m_btnPackagesDelete;
	KPushButton *m_btnPackagesReset;

	// GUI
	TQWidget *setupClassOptions(TQTabWidget *tab);           
	TQWidget *setupPackages(TQTabWidget *tab);                
	TQWidget *setupProperties(TQTabWidget *tab);              
	
	// read/write config files and init data
	void readConfig();
	void readDocumentClassConfig();
	void readPackagesConfig();
	void initHyperref();
	void writeConfig();
	void writeDocumentClassConfig();
	void writePackagesConfig();                
	
	// document class tab
	void initDocumentClass(); 
	void initStandardClass(const TQString &classname,const TQString &fontsize,      
	                       const TQString &papersize,const TQString &defaultoptions,
	                       const TQString &selectedoptions);
	void initStandardOptions(const TQString &classname,TQStringList &optionlist); 	
	void setDefaultClassOptions(const TQString &defaultoptions);            
	void setSelectedClassOptions(const TQString &selectedoptions);             
	void setClassOptions(const TQStringList &list,uint start);            
	void updateClassOptions(); 
	TQString getClassOptions();  
	void fillDocumentClassCombobox();   
	void fillCombobox(KComboBox *combo, const TQString &cslist,const TQString &seltext);    
	bool addComboboxEntries(KComboBox *combo, const TQString &title,const TQString &entry);
	TQString getComboxboxList(KComboBox *combo);
		   
	bool isDefaultClassOption(const TQString &option);                   
	bool isSelectedClassOption(const TQString &option);                  
	TQString stripDefault(const TQString &s);          
	
	// packages tab
	void initPackages();
	bool readPackagesListview();        
	TQCheckListItem *insertListview(TQListView *listview,               
                                  const TQString &entry,
                                  const TQString &description);
	TQCheckListItem *insertListview(TQCheckListItem *parent,               
                                  const TQString &entry,
                                  const TQString &description);
	TQCheckListItem *insertEditableListview(TQCheckListItem *parent,               
	                                       const TQString &entry,const TQString &description,
	                                       const TQString value,const TQString defaultvalue);
	bool isListviewEntry(TQListView *listview,const TQString &entry);
	void setPackagesValue(TQListViewItem *item,const TQString &option,const TQString &val);
	TQString getPackagesValue(const TQString &value);

	bool isListviewChild(TQListView *listview,const TQString &entry, const TQString &option);
	TQString addPackageDefault(const TQString &option,const TQString &description);
	TQString stripPackageDefault(const TQString &option,const TQString &description);
	bool isHyperrefDriver(const TQString &name);
	
	// document template
	void printTemplate();
	void printPackages();
	void printHyperref();
	void printBeamerTheme();
	
	// input dialog
	bool inputDialog(TQStringList &list,int check=qd_CheckNotEmpty);

private slots:
	void slotDocumentClassAdd();
	void slotDocumentClassDelete();
	void slotDocumentClassChanged(int index);  
	void slotTypefaceSizeAdd();  
	void slotTypefaceSizeDelete();  
	void slotPaperSizeAdd();
	void slotPaperSizeDelete();
	void slotOptionDoubleClicked(TQListViewItem *listViewItem,const TQPoint &,int); 
	void slotClassOptionAdd();
	void slotClassOptionEdit();
	void slotClassOptionDelete();
	
	void slotCheckParent(TQListViewItem *listViewItem);
	void slotPackageDoubleClicked(TQListViewItem *listViewItem,const TQPoint &,int);
	void slotPackageAdd();
	void slotPackageAddOption();
	void slotPackageEdit();
	void slotPackageDelete();
	void slotPackageReset();
	
	void slotEnableButtons();
};

class QuickDocumentInputDialog : public KDialogBase  {
   TQ_OBJECT
  
public: 
	QuickDocumentInputDialog(const TQStringList &list,int check=0,
	                         QuickDocument *parent=0, const char *name=0);
	~QuickDocumentInputDialog();

	void getResults(TQStringList &list);
	
private:
	QuickDocument *m_parent;
	int  m_check;
	
	TQStringList m_description;
	TQValueList<TQWidget *> m_objectlist;
		
	TQString getPackageName(const TQString &text);
	bool checkListEntries(const TQString &title, const TQString &textlist,const TQString &pattern);
	
private slots:
	void slotOk();
};

} // namespace

#endif