Fixed: null param problem in print dialog
[kdevelop:kdevelop.git] / kdevelop / print / cprintdlg.cpp
1 /***************************************************************************
2                           cprintdlg.cpp  -  description                              
3                              -------------------                                         
4     begin                : Thu Feb 4 1999                                           
5     copyright            : (C) 1999 by Stefan Heidrich                         
6     email                : sheidric@rz.uni-potsdam.de                                     
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   * 
15  *                                                                         *
16  ***************************************************************************/
17
18
19 #include "cprintdlg.h"
20
21 #include "cfileprintdlg.h"
22
23 #include "../resource.h"
24 #include "../cproject.h"
25
26 //#include <kapp.h>
27 #include <kdebug.h>
28 #include <klocale.h>
29 #include <kmessagebox.h>
30 #include <kstddirs.h>
31
32 #include <qbuttongroup.h>
33 #include <qlabel.h>
34 #include <qlayout.h>
35 #include <qpixmap.h>
36 #include <qwhatsthis.h>
37 #include <qgrid.h>
38
39 //#include <string.h>
40
41 // Remove all null parameters (ie of the form "xyz= ")
42 QString removeNullParams(const QString& params)
43 {
44   QStringList paramsList = QStringList::split(" ", params, false);
45   QStringList::Iterator paramsListIt = paramsList.begin();
46   QString returnParams = *paramsListIt;   // WARNING: There's must be a nice first param
47
48   while ( ++paramsListIt != paramsList.end())
49   {
50     if ((*paramsListIt).right(1) != "=")
51       returnParams += " " + *paramsListIt;
52   }
53
54   kdDebug() << "params <" << params << ">" << endl;
55   kdDebug() << "return <" << returnParams << ">" << endl;
56
57   return returnParams;
58 }
59
60 CPrintDlg::CPrintDlg(QWidget* parent,const char* edittab,const char* name, bool html) :
61   QDialog(parent, name, true)
62 {
63   init();
64   loadSettings();
65   string = "";
66   globalpara = "";
67         oldfiles = (QString) edittab;
68   files = createFileString();
69   doctab = html;
70 }
71
72 CPrintDlg::~CPrintDlg(){
73   delete (cancelButton);
74   delete (previewButton);
75   delete (okButton);
76   delete (printToFileButton);
77   delete (mediaCombBox);
78   delete (prettyCombBox);
79   delete (filesConfButton);
80   delete (pagePerSide);
81   delete (pageSide);
82   delete (prettyColorCheckBox);
83   delete (prettyPrintCheckBox);
84   delete (copySpinBox);
85   delete (defaultCombBox);
86   delete (formatCombBox);
87   delete (printToFileDlg);
88   delete (printerLine);
89   delete (qtarch_Label_1);
90   delete (programCombBox);
91   delete (paperCombBox);
92   delete (printToFileLine);
93   delete (printingConfButton);
94   delete (paperFormatGroup);
95   delete (qtarch_ButtonGroup_2);
96   delete (qtarch_ButtonGroup_3);
97   delete (qtarch_ButtonGroup_4);
98   delete (qtarch_ButtonGroup_6);
99   delete (qtarch_ButtonGroup_5);
100   delete (qtarch_ButtonGroup_7);
101   delete (qtarch_ButtonGroup_10);
102   delete (qtarch_ButtonGroup_11);
103   delete (qtarch_ButtonGroup_34);
104   delete (qtarch_ButtonGroup_9);
105   delete (qtarch_ButtonGroup_8);
106   delete (qtarch_ButtonGroup_35);
107
108 }
109
110
111 void CPrintDlg::init(){
112   QGridLayout *grid1 = new QGridLayout(this,6,4,15,7);
113
114   ////////// Program select ///////////
115   qtarch_ButtonGroup_2 = new QButtonGroup( this, "ButtonGroup_2" );
116   qtarch_ButtonGroup_2->setFocusPolicy( QWidget::NoFocus );
117   qtarch_ButtonGroup_2->setBackgroundMode( QWidget::PaletteBackground );
118   qtarch_ButtonGroup_2->setFontPropagation( QWidget::NoChildren );
119   qtarch_ButtonGroup_2->setPalettePropagation( QWidget::NoChildren );
120   qtarch_ButtonGroup_2->setFrameStyle( 49 );
121   qtarch_ButtonGroup_2->setTitle(i18n( "Program" ));
122   qtarch_ButtonGroup_2->setAlignment( 1 );
123   grid1->addWidget(qtarch_ButtonGroup_2,0,0);
124
125   QHBoxLayout *box1 = new QHBoxLayout( qtarch_ButtonGroup_2 );
126   box1->setMargin( 15 );
127   box1->setSpacing( 15 );
128   programCombBox = new QComboBox( FALSE, qtarch_ButtonGroup_2, "programCombBox" );
129   programCombBox->setFocusPolicy( QWidget::StrongFocus );
130   programCombBox->setBackgroundMode( QWidget::PaletteBackground );
131   programCombBox->setFontPropagation( QWidget::NoChildren );
132   programCombBox->setPalettePropagation( QWidget::NoChildren );
133   programCombBox->setSizeLimit( 10 );
134   programCombBox->setAutoResize( FALSE );
135   programCombBox->insertItem( "a2ps" );
136   programCombBox->insertItem( "enscript" );
137   programCombBox->insertItem( "lpr" );
138   connect(programCombBox,SIGNAL(activated (int)),SLOT(slotProgramActivated(int)));
139   box1->addWidget(programCombBox);
140   ////////// Printer select /////////////
141   qtarch_ButtonGroup_5 = new QButtonGroup( this, "ButtonGroup_5" );
142   qtarch_ButtonGroup_5->setFocusPolicy( QWidget::NoFocus );
143   qtarch_ButtonGroup_5->setBackgroundMode( QWidget::PaletteBackground );
144   qtarch_ButtonGroup_5->setFontPropagation( QWidget::NoChildren );
145   qtarch_ButtonGroup_5->setPalettePropagation( QWidget::NoChildren );
146   qtarch_ButtonGroup_5->setFrameStyle( 49 );
147   qtarch_ButtonGroup_5->setTitle(i18n( "Printer" ));
148   qtarch_ButtonGroup_5->setAlignment( 1 );
149   grid1->addWidget(qtarch_ButtonGroup_5,0,1);
150
151   QVBoxLayout *box2 = new QVBoxLayout( qtarch_ButtonGroup_5 );
152   box2->setMargin( 15 );
153   box2->setSpacing( 15 );
154   qtarch_Label_1 = new QLabel(  qtarch_ButtonGroup_5, "Label_1" );
155   qtarch_Label_1->setFocusPolicy( QWidget::NoFocus );
156   qtarch_Label_1->setBackgroundMode( QWidget::PaletteBackground );
157   qtarch_Label_1->setFontPropagation( QWidget::NoChildren );
158   qtarch_Label_1->setPalettePropagation( QWidget::NoChildren );
159   qtarch_Label_1->setText(i18n( "printername" ));
160   qtarch_Label_1->setAlignment( 289 );
161   qtarch_Label_1->setMargin( -1 );
162   box2->addWidget(qtarch_Label_1);
163
164   printerLine = new QLineEdit( qtarch_ButtonGroup_5, "printerLine" );
165   printerLine->setFocusPolicy( QWidget::StrongFocus );
166   printerLine->setBackgroundMode( QWidget::PaletteBase );
167   printerLine->setFontPropagation( QWidget::NoChildren );
168   printerLine->setPalettePropagation( QWidget::NoChildren );
169   printerLine->setText( "default" );
170   printerLine->setMaxLength( 32767 );
171   printerLine->setEchoMode( QLineEdit::Normal );
172   printerLine->setFrame( TRUE );
173   box2->addWidget(printerLine);
174
175         //////////// Outputlocation /////////////
176   qtarch_ButtonGroup_6 = new QButtonGroup( this, "ButtonGroup_6" );
177   qtarch_ButtonGroup_6->setFocusPolicy( QWidget::NoFocus );
178   qtarch_ButtonGroup_6->setBackgroundMode( QWidget::PaletteBackground );
179   qtarch_ButtonGroup_6->setFontPropagation( QWidget::NoChildren );
180   qtarch_ButtonGroup_6->setPalettePropagation( QWidget::NoChildren );
181   qtarch_ButtonGroup_6->setFrameStyle( 49 );
182   qtarch_ButtonGroup_6->setTitle(i18n( "Outputlocation" ));
183   qtarch_ButtonGroup_6->setAlignment( 1 );
184   grid1->addMultiCellWidget(qtarch_ButtonGroup_6,1,1,0,1);
185
186   QGridLayout *grid2 = new QGridLayout(qtarch_ButtonGroup_6,2,2,15,7);
187
188   printToFileButton = new QCheckBox(qtarch_ButtonGroup_6 , "printToFileButton" );
189   printToFileButton->setFocusPolicy( QWidget::TabFocus );
190   printToFileButton->setBackgroundMode( QWidget::PaletteBackground );
191   printToFileButton->setFontPropagation( QWidget::NoChildren );
192   printToFileButton->setPalettePropagation( QWidget::NoChildren );
193   printToFileButton->setText(i18n( "print to file" ));
194   printToFileButton->setAutoRepeat( FALSE );
195   printToFileButton->setAutoResize( FALSE );
196   connect (printToFileButton,SIGNAL(toggled(bool)),SLOT(slotPrintToFileClicked(bool)));
197   grid2->addWidget(printToFileButton,0,0);
198
199   printToFileLine = new QLineEdit( qtarch_ButtonGroup_6, "printToFileLine" );
200   printToFileLine->setFocusPolicy( QWidget::StrongFocus );
201   printToFileLine->setBackgroundMode( QWidget::PaletteBase );
202   printToFileLine->setFontPropagation( QWidget::NoChildren );
203   printToFileLine->setPalettePropagation( QWidget::NoChildren );
204   printToFileLine->setText( "" );
205   printToFileLine->setMaxLength( 32767 );
206   printToFileLine->setEchoMode( QLineEdit::Normal );
207   printToFileLine->setFrame( TRUE );
208   grid2->addWidget(printToFileLine,1,0);
209
210   printToFileDlg = new QPushButton( qtarch_ButtonGroup_6, "PrintToFileDlg" );
211   printToFileDlg->setFocusPolicy( QWidget::TabFocus );
212   printToFileDlg->setBackgroundMode( QWidget::PaletteBackground );
213   printToFileDlg->setFontPropagation( QWidget::NoChildren );
214   printToFileDlg->setPalettePropagation( QWidget::NoChildren );
215   QPixmap pix(SmallIcon("fileopen"));
216   printToFileDlg->setPixmap(pix);
217   printToFileDlg->setAutoRepeat( FALSE );
218   printToFileDlg->setAutoResize( FALSE );
219   connect (printToFileDlg,SIGNAL(clicked()),SLOT(slotPrintToFileDlgClicked()));
220   grid2->addWidget(printToFileDlg,1,1);
221
222         /////////// Paper format ///////////
223   paperFormatGroup = new QButtonGroup( this, "PaperFormatGroup" );
224   paperFormatGroup->setFocusPolicy( QWidget::NoFocus );
225   paperFormatGroup->setBackgroundMode( QWidget::PaletteBackground );
226   paperFormatGroup->setFontPropagation( QWidget::NoChildren );
227   paperFormatGroup->setPalettePropagation( QWidget::NoChildren );
228   paperFormatGroup->setFrameStyle( 49 );
229   paperFormatGroup->setTitle(i18n( "Paper format" ));
230   paperFormatGroup->setAlignment( 1 );
231   grid1->addWidget(paperFormatGroup,2,0);
232
233
234
235   box1 = new QHBoxLayout( paperFormatGroup );
236   box1->setMargin( 15 );
237   box1->setSpacing( 15 );
238   paperCombBox = new QComboBox( FALSE, paperFormatGroup, "paperCombBox" );
239   paperCombBox->setFocusPolicy( QWidget::StrongFocus );
240   paperCombBox->setBackgroundMode( QWidget::PaletteBackground );
241   paperCombBox->setFontPropagation( QWidget::NoChildren );
242   paperCombBox->setPalettePropagation( QWidget::NoChildren );
243   paperCombBox->setSizeLimit( 10 );
244   paperCombBox->setAutoResize( FALSE );
245   paperCombBox->insertItem(i18n("portrait"));
246   paperCombBox->insertItem(i18n("landscape"));
247   box1->addWidget(paperCombBox);
248
249         ////////// Copy //////////////
250   qtarch_ButtonGroup_7 = new QButtonGroup( this, "ButtonGroup_7" );
251   qtarch_ButtonGroup_7->setFocusPolicy( QWidget::NoFocus );
252   qtarch_ButtonGroup_7->setBackgroundMode( QWidget::PaletteBackground );
253   qtarch_ButtonGroup_7->setFontPropagation( QWidget::NoChildren );
254   qtarch_ButtonGroup_7->setPalettePropagation( QWidget::NoChildren );
255   qtarch_ButtonGroup_7->setFrameStyle( 49 );
256   qtarch_ButtonGroup_7->setTitle(i18n( "Copy" ));
257   qtarch_ButtonGroup_7->setAlignment( 1 );
258   grid1->addWidget(qtarch_ButtonGroup_7,2,1);
259
260   box1 = new QHBoxLayout( qtarch_ButtonGroup_7 );
261   box1->setMargin( 15 );
262   box1->setSpacing( 15 );
263
264   copySpinBox = new QSpinBox( qtarch_ButtonGroup_7, "copySpinBox" );
265   copySpinBox->setFocusPolicy( QWidget::StrongFocus );
266   copySpinBox->setBackgroundMode( QWidget::PaletteBackground );
267   copySpinBox->setFontPropagation( QWidget::NoChildren );
268   copySpinBox->setPalettePropagation( QWidget::NoChildren );
269   copySpinBox->setFrameStyle( 50 );
270   copySpinBox->setLineWidth( 2 );
271   copySpinBox->setRange( 1, 99 );
272   copySpinBox->setSteps( 1, 0 );
273   copySpinBox->setPrefix( "" );
274   copySpinBox->setSuffix( "" );
275   copySpinBox->setSpecialValueText( "" );
276   copySpinBox->setWrapping( FALSE );
277   box1->addWidget(copySpinBox);
278
279         ////////////// Outputmedia //////////////
280   qtarch_ButtonGroup_35 = new QButtonGroup( this, "ButtonGroup_35" );
281   qtarch_ButtonGroup_35->setFocusPolicy( QWidget::NoFocus );
282   qtarch_ButtonGroup_35->setBackgroundMode( QWidget::PaletteBackground );
283   qtarch_ButtonGroup_35->setFontPropagation( QWidget::NoChildren );
284   qtarch_ButtonGroup_35->setPalettePropagation( QWidget::NoChildren );
285   qtarch_ButtonGroup_35->setFrameStyle( 49 );
286   qtarch_ButtonGroup_35->setTitle(i18n( "Outputmedia" ));
287   qtarch_ButtonGroup_35->setAlignment( 1 );
288   grid1->addWidget(qtarch_ButtonGroup_35,3,0);
289
290   box1 = new QHBoxLayout( qtarch_ButtonGroup_35 );
291   box1->setMargin( 15 );
292   box1->setSpacing( 15 );
293
294   mediaCombBox = new QComboBox( FALSE, qtarch_ButtonGroup_35, "mediaCombBox" );
295   mediaCombBox->setGeometry( 30, 300, 120, 30 );
296   mediaCombBox->setMinimumSize( 0, 0 );
297   mediaCombBox->setMaximumSize( 32767, 32767 );
298   mediaCombBox->setFocusPolicy( QWidget::StrongFocus );
299   mediaCombBox->setBackgroundMode( QWidget::PaletteBackground );
300   mediaCombBox->setFontPropagation( QWidget::NoChildren );
301   mediaCombBox->setPalettePropagation( QWidget::NoChildren );
302   mediaCombBox->setSizeLimit( 10 );
303   mediaCombBox->setAutoResize( FALSE );
304   box1->addWidget(mediaCombBox);
305
306   ///////// Outputformat ////////
307   qtarch_ButtonGroup_3 = new QButtonGroup( this, "ButtonGroup_3" );
308   qtarch_ButtonGroup_3->setFocusPolicy( QWidget::NoFocus );
309   qtarch_ButtonGroup_3->setBackgroundMode( QWidget::PaletteBackground );
310   qtarch_ButtonGroup_3->setFontPropagation( QWidget::NoChildren );
311   qtarch_ButtonGroup_3->setPalettePropagation( QWidget::NoChildren );
312   qtarch_ButtonGroup_3->setFrameStyle( 49 );
313   qtarch_ButtonGroup_3->setTitle(i18n( "Outputformat" ));
314   qtarch_ButtonGroup_3->setAlignment( 1 );
315   grid1->addWidget(qtarch_ButtonGroup_3,3,1);
316
317   box1 = new QHBoxLayout( qtarch_ButtonGroup_3 );
318   box1->setMargin( 15 );
319   box1->setSpacing( 15 );
320   formatCombBox = new QComboBox( FALSE, qtarch_ButtonGroup_3, "formatCombBox" );
321   formatCombBox->setFocusPolicy( QWidget::StrongFocus );
322   formatCombBox->setBackgroundMode( QWidget::PaletteBackground );
323   formatCombBox->setFontPropagation( QWidget::NoChildren );
324   formatCombBox->setPalettePropagation( QWidget::NoChildren );
325   formatCombBox->setSizeLimit( 10 );
326   formatCombBox->setAutoResize( FALSE );
327   formatCombBox->insertItem( "postscript" );
328   formatCombBox->insertItem( "html" );
329   box1->addWidget(formatCombBox);
330
331         ////////////// Default Printsettings /////////
332   qtarch_ButtonGroup_4 = new QButtonGroup( this, "ButtonGroup_4" );
333   qtarch_ButtonGroup_4->setFocusPolicy( QWidget::NoFocus );
334   qtarch_ButtonGroup_4->setBackgroundMode( QWidget::PaletteBackground );
335   qtarch_ButtonGroup_4->setFontPropagation( QWidget::NoChildren );
336   qtarch_ButtonGroup_4->setPalettePropagation( QWidget::NoChildren );
337   qtarch_ButtonGroup_4->setFrameStyle( 49 );
338   qtarch_ButtonGroup_4->setTitle(i18n( "Default printsettings" ));
339   qtarch_ButtonGroup_4->setAlignment( 1 );
340   grid1->addMultiCellWidget( qtarch_ButtonGroup_4,4,4,0,1);
341
342   box1 = new QHBoxLayout( qtarch_ButtonGroup_4 );
343   box1->setMargin( 15 );
344   box1->setSpacing( 15 );
345
346   defaultCombBox = new QComboBox( FALSE, qtarch_ButtonGroup_4, "defaultCombBox" );
347   defaultCombBox->setFocusPolicy( QWidget::StrongFocus );
348   defaultCombBox->setBackgroundMode( QWidget::PaletteBackground );
349   defaultCombBox->setFontPropagation( QWidget::NoChildren );
350   defaultCombBox->setPalettePropagation( QWidget::NoChildren );
351   defaultCombBox->setSizeLimit( 10 );
352   defaultCombBox->setAutoResize( FALSE );
353   defaultCombBox->insertItem(i18n("settings"));
354   box1->addWidget(defaultCombBox);
355
356         ///////// Top buttons //////
357   filesConfButton = new QPushButton( this, "filesConfButton" );
358   filesConfButton->setFocusPolicy( QWidget::TabFocus );
359   filesConfButton->setBackgroundMode( QWidget::PaletteBackground );
360   filesConfButton->setFontPropagation( QWidget::NoChildren );
361   filesConfButton->setPalettePropagation( QWidget::NoChildren );
362   filesConfButton->setText(i18n( "Files..." ));
363   filesConfButton->setAutoRepeat( FALSE );
364   filesConfButton->setAutoResize( FALSE );
365   connect (filesConfButton, SIGNAL(clicked()),SLOT(slotFilesConfClicked()));
366   grid1->addWidget(filesConfButton,0,2);
367
368   printingConfButton = new QPushButton( this, "printingConfButton" );
369   printingConfButton->setFocusPolicy( QWidget::TabFocus );
370   printingConfButton->setBackgroundMode( QWidget::PaletteBackground );
371   printingConfButton->setFontPropagation( QWidget::NoChildren );
372   printingConfButton->setPalettePropagation( QWidget::NoChildren );
373   printingConfButton->setText(i18n( "Options..." ));
374   printingConfButton->setAutoRepeat( FALSE );
375   printingConfButton->setAutoResize( FALSE );
376   connect (printingConfButton,SIGNAL(clicked()),SLOT(slotPrintingConfClicked()));
377   grid1->addWidget(printingConfButton,0,3);
378
379   ///////// Outprinting ////////
380   qtarch_ButtonGroup_8 = new QButtonGroup( this, "ButtonGroup_8" );
381   qtarch_ButtonGroup_8->setFocusPolicy( QWidget::NoFocus );
382   qtarch_ButtonGroup_8->setBackgroundMode( QWidget::PaletteBackground );
383   qtarch_ButtonGroup_8->setFontPropagation( QWidget::NoChildren );
384   qtarch_ButtonGroup_8->setPalettePropagation( QWidget::NoChildren );
385   qtarch_ButtonGroup_8->setFrameStyle( 49 );
386   qtarch_ButtonGroup_8->setTitle(i18n( "Outprinting" ));
387   qtarch_ButtonGroup_8->setAlignment( 1 );
388   grid1->addMultiCellWidget( qtarch_ButtonGroup_8,1,4,2,3);
389
390
391   grid2 = new QGridLayout(qtarch_ButtonGroup_8,2,2,15,7);
392
393   ///// Page printing ////////
394   qtarch_ButtonGroup_10 = new QButtonGroup( qtarch_ButtonGroup_8, "ButtonGroup_10" );
395   qtarch_ButtonGroup_10->setFocusPolicy( QWidget::NoFocus );
396   qtarch_ButtonGroup_10->setBackgroundMode( QWidget::PaletteBackground );
397   qtarch_ButtonGroup_10->setFontPropagation( QWidget::NoChildren );
398   qtarch_ButtonGroup_10->setPalettePropagation( QWidget::NoChildren );
399   qtarch_ButtonGroup_10->setFrameStyle( 49 );
400   qtarch_ButtonGroup_10->setTitle(i18n( "Page printing" ));
401   qtarch_ButtonGroup_10->setAlignment( 1 );
402   grid2->addWidget(qtarch_ButtonGroup_10,0,0);
403
404   box1 = new QHBoxLayout( qtarch_ButtonGroup_10 );
405   box1->setMargin( 15 );
406   box1->setSpacing( 15 );
407
408
409   pagePerSide = new QComboBox( FALSE,qtarch_ButtonGroup_10 , "pagePerSide" );
410   pagePerSide->setFocusPolicy( QWidget::StrongFocus );
411   pagePerSide->setBackgroundMode( QWidget::PaletteBackground );
412   pagePerSide->setFontPropagation( QWidget::NoChildren );
413   pagePerSide->setPalettePropagation( QWidget::NoChildren );
414   pagePerSide->setSizeLimit( 10 );
415   pagePerSide->setAutoResize( FALSE );
416   pagePerSide->insertItem(i18n( "one page per side" ));
417   pagePerSide->insertItem(i18n( "two pages per side" ));
418   box1->addWidget(pagePerSide);
419
420   ///////// Pages  /////////
421   qtarch_ButtonGroup_11 = new QButtonGroup( qtarch_ButtonGroup_8, "ButtonGroup_11" );
422   qtarch_ButtonGroup_11->setFocusPolicy( QWidget::NoFocus );
423   qtarch_ButtonGroup_11->setBackgroundMode( QWidget::PaletteBackground );
424   qtarch_ButtonGroup_11->setFontPropagation( QWidget::NoChildren );
425   qtarch_ButtonGroup_11->setPalettePropagation( QWidget::NoChildren );
426   qtarch_ButtonGroup_11->setFrameStyle( 49 );
427   qtarch_ButtonGroup_11->setTitle(i18n( "Pages" ));
428   qtarch_ButtonGroup_11->setAlignment( 1 );
429   grid2->addWidget(qtarch_ButtonGroup_11,1,0);
430
431   box1 = new QHBoxLayout( qtarch_ButtonGroup_11 );
432   box1->setMargin( 15 );
433   box1->setSpacing( 15 );
434
435   pageSide = new QComboBox( TRUE, qtarch_ButtonGroup_11, "pageSide" );
436   pageSide->setFocusPolicy( QWidget::StrongFocus );
437   pageSide->setBackgroundMode( QWidget::PaletteBackground );
438   pageSide->setFontPropagation( QWidget::NoChildren );
439   pageSide->setPalettePropagation( QWidget::NoChildren );
440   pageSide->setInsertionPolicy( QComboBox::NoInsertion );
441   pageSide->setSizeLimit( 10 );
442   pageSide->setAutoResize( FALSE );
443
444  
445   pageSide->insertItem(i18n ("all"));
446   pageSide->insertItem(i18n ("odd"));
447   pageSide->insertItem(i18n ("even"));
448   box1->addWidget(pageSide);
449
450   ////// Pretty-print //////////
451   qtarch_ButtonGroup_9 = new QButtonGroup( qtarch_ButtonGroup_8, "ButtonGroup_9" );
452   qtarch_ButtonGroup_9->setFocusPolicy( QWidget::NoFocus );
453   qtarch_ButtonGroup_9->setBackgroundMode( QWidget::PaletteBackground );
454   qtarch_ButtonGroup_9->setFontPropagation( QWidget::NoChildren );
455   qtarch_ButtonGroup_9->setPalettePropagation( QWidget::NoChildren );
456   qtarch_ButtonGroup_9->setFrameStyle( 49 );
457   qtarch_ButtonGroup_9->setTitle(i18n( "Pretty-print" ));
458   qtarch_ButtonGroup_9->setAlignment( 1 );
459   grid2->addMultiCellWidget(qtarch_ButtonGroup_9,2,3,0,0);
460
461
462   QGridLayout *grid3 = new QGridLayout(qtarch_ButtonGroup_9,2,2,15,7);
463   prettyPrintCheckBox = new QCheckBox(qtarch_ButtonGroup_9 , "prettyPrintCheckBox" );
464   prettyPrintCheckBox->setFocusPolicy( QWidget::TabFocus );
465   prettyPrintCheckBox->setBackgroundMode( QWidget::PaletteBackground );
466   prettyPrintCheckBox->setFontPropagation( QWidget::NoChildren );
467   prettyPrintCheckBox->setPalettePropagation( QWidget::NoChildren );
468   prettyPrintCheckBox->setText(i18n( "pretty-print" ));
469   prettyPrintCheckBox->setAutoRepeat( FALSE );
470   prettyPrintCheckBox->setAutoResize( FALSE );
471   connect (prettyPrintCheckBox,SIGNAL(toggled(bool)),SLOT(slotPrettyPrintClicked(bool)));
472   grid3->addWidget(prettyPrintCheckBox,0,0);
473   
474   prettyColorCheckBox = new QCheckBox(qtarch_ButtonGroup_9 , "prettyColorCheckBox" );
475
476   prettyColorCheckBox->setFocusPolicy( QWidget::TabFocus );
477   prettyColorCheckBox->setBackgroundMode( QWidget::PaletteBackground );
478   prettyColorCheckBox->setFontPropagation( QWidget::NoChildren );
479   prettyColorCheckBox->setPalettePropagation( QWidget::NoChildren );
480   prettyColorCheckBox->setText(i18n( "color" ));
481   prettyColorCheckBox->setAutoRepeat( FALSE );
482   prettyColorCheckBox->setAutoResize( FALSE );
483   grid3->addWidget(prettyColorCheckBox,0,1);
484
485   qtarch_ButtonGroup_34 = new QButtonGroup(qtarch_ButtonGroup_9 , "ButtonGroup_34" );
486   qtarch_ButtonGroup_34->setFocusPolicy( QWidget::NoFocus );
487   qtarch_ButtonGroup_34->setBackgroundMode( QWidget::PaletteBackground );
488   qtarch_ButtonGroup_34->setFontPropagation( QWidget::NoChildren );
489   qtarch_ButtonGroup_34->setPalettePropagation( QWidget::NoChildren );
490   qtarch_ButtonGroup_34->setFrameStyle( 49 );
491   qtarch_ButtonGroup_34->setTitle(i18n( "Pretty-print mode" ));
492   qtarch_ButtonGroup_34->setAlignment( 1 );
493   grid3->addMultiCellWidget(qtarch_ButtonGroup_34,1,1,0,1);
494
495
496   box1 = new QHBoxLayout( qtarch_ButtonGroup_34 );
497   box1->setMargin( 15 );
498   box1->setSpacing( 15 );
499   
500
501   prettyCombBox = new QComboBox( FALSE,qtarch_ButtonGroup_34, "prettyCombBox" );
502   prettyCombBox->setFocusPolicy( QWidget::StrongFocus );
503   prettyCombBox->setBackgroundMode( QWidget::PaletteBackground );
504   prettyCombBox->setFontPropagation( QWidget::NoChildren );
505   prettyCombBox->setPalettePropagation( QWidget::NoChildren );
506   prettyCombBox->setSizeLimit( 40 );
507   prettyCombBox->setAutoResize( FALSE );
508   prettyCombBox->insertItem( "Ada95" );
509   prettyCombBox->insertItem( "AWK" );
510   prettyCombBox->insertItem( "C" );
511   prettyCombBox->insertItem( "ChangeLog" );
512   prettyCombBox->insertItem( "C++" );
513   prettyCombBox->insertItem( "normal diff" );
514   prettyCombBox->insertItem( "unified diff" );
515   prettyCombBox->insertItem( "Delphi" );
516   prettyCombBox->insertItem( "LISP" );
517   prettyCombBox->insertItem( "Fortran77" );
518   prettyCombBox->insertItem( "Haskell" );
519   prettyCombBox->insertItem( "HTML" );
520   prettyCombBox->insertItem( "Java" );
521   prettyCombBox->insertItem( "JavaScript" );
522   prettyCombBox->insertItem( "Mail & News" );
523   prettyCombBox->insertItem( "Makefile" );
524   prettyCombBox->insertItem( "nroff" );
525   prettyCombBox->insertItem( "Objective-C" );
526   prettyCombBox->insertItem( "Pascal" );
527   prettyCombBox->insertItem( "Perl" );
528   prettyCombBox->insertItem( "PostScript" );
529   prettyCombBox->insertItem( "Scheme" );
530   prettyCombBox->insertItem( "Bourne shell" );
531   prettyCombBox->insertItem( "SQL" );
532   prettyCombBox->insertItem( "States" );
533   prettyCombBox->insertItem( "Synopsys dc shell" );
534   prettyCombBox->insertItem( "Tcl" );
535   prettyCombBox->insertItem( "Verilog" );
536   prettyCombBox->insertItem( "VHDLt" );
537   prettyCombBox->setCurrentItem(2);
538   box1->addWidget(prettyCombBox);
539   
540
541   previewButton = new QPushButton( this, "previewButton" );
542   previewButton->setText(i18n("Preview"));
543   connect(previewButton,SIGNAL(clicked()),SLOT(slotPreviewClicked()));
544   grid1->addWidget(previewButton,5,0);
545
546   okButton = new QPushButton( this, "okButton" );
547   okButton->setText(i18n("OK"));
548   okButton->setDefault(true);
549   connect(okButton,SIGNAL(clicked()),SLOT(slotOkClicked()));
550   grid1->addWidget(okButton,5,2);
551
552   cancelButton = new QPushButton( this, "cancelButton" );
553   cancelButton->setText(i18n("Cancel"));
554   connect(cancelButton,SIGNAL(clicked()),SLOT(slotCancelClicked()));
555   grid1->addWidget(cancelButton,5,3);
556
557   QWhatsThis::add(printingConfButton,
558         i18n("If you click this button a configdialog will be shown.\n"
559              "Which configdialog will be shown is depend on the\n"
560              "choosen program."));
561
562   QWhatsThis::add(printToFileDlg,
563         i18n("If you click this button a filedialog will be shown."));
564
565   QWhatsThis::add(filesConfButton,
566         i18n("If you click this button the fileprintdialog will be shown."));
567
568   QWhatsThis::add(printToFileLine,
569         i18n("In this file the printing is gone."));
570
571   QString printerLineMsg = i18n("In this line you can specify the printer, with which\n"
572                                     "you will print. If default is written in the line, the\n"
573                                     "default printer ($PRINTER) is choosen.");
574   QWhatsThis::add(qtarch_Label_1, printerLineMsg);
575   QWhatsThis::add(printerLine, printerLineMsg);
576
577   QWhatsThis::add(paperCombBox,
578         i18n("Here you can change the paper direction."));
579
580   QWhatsThis::add(programCombBox,
581         i18n("Here you can set the program, you whish to use."));
582
583   QWhatsThis::add(formatCombBox,
584         i18n("Here you can choose, if you print out in postscript or html."));
585
586   QWhatsThis::add(defaultCombBox,
587         i18n("Here you can choose, if you print with your personal\n"
588              "settings. Or with some other settings."));
589
590   QString pageSideMsg = i18n("Here you can set the sides, which you will print.\n"
591                              "You can also specify an interval like:\n"
592                              "5-    :print from side 5 to end\n"
593                              "5-10 :print from side 5 to side 10\n"
594                              "-10   :print from side 1 to side 10");
595   QWhatsThis::add(qtarch_ButtonGroup_11, pageSideMsg);
596   QWhatsThis::add(pageSide, pageSideMsg);
597
598   QWhatsThis::add(pagePerSide,
599         i18n("Here you can choose, if you wish to print 1 page per\n"
600              "physical side or 2 page."));
601
602   QWhatsThis::add(prettyCombBox,
603         i18n("Here you can set the pretty-print-mode."));
604
605   QWhatsThis::add(mediaCombBox,
606         i18n("Here you can change the paperformat."));
607
608   QString copySpinBoxMsg = i18n("Here you can set, how many times you will print the files.");
609   QWhatsThis::add(qtarch_ButtonGroup_7, copySpinBoxMsg);
610   QWhatsThis::add(copySpinBox, copySpinBoxMsg);
611
612   QWhatsThis::add(prettyPrintCheckBox,
613         i18n("If you wish to print in pretty-print-mode then check this button."));
614
615   QWhatsThis::add(prettyColorCheckBox,
616         i18n("If you wish to print in pretty-print-color-mode,\n"
617              "then check this button."));
618
619   QWhatsThis::add(printToFileButton,
620         i18n("If you wish to print to file, then check this button."));
621
622 }
623
624 void CPrintDlg::slotProgramActivated(int i) {
625   if (i==1) 
626     {
627       prettyPrintCheckBox->setEnabled(true);
628       //      slotPrettyPrintClicked(false);
629       formatCombBox->setEnabled(true);
630       pageSide->setEnabled(true);
631       qtarch_ButtonGroup_9->setEnabled(true);
632       qtarch_ButtonGroup_11->setEnabled(true);
633       qtarch_ButtonGroup_3->setEnabled(true);
634       defaultCombBox->setEnabled(true);
635       mediaCombBox->setEnabled(true);
636       paperFormatGroup->setEnabled(true);
637       pagePerSide->setEnabled(true);
638       paperCombBox->setEnabled(true);
639       qtarch_ButtonGroup_4->setEnabled(true);
640       qtarch_ButtonGroup_10->setEnabled(true);
641       qtarch_ButtonGroup_8->setEnabled(true);
642       qtarch_ButtonGroup_35->setEnabled(true);
643       printingConfButton->setEnabled(true);
644       previewButton->setEnabled(true);
645       printToFileDlg->setEnabled(printToFileButton->isChecked());
646       printToFileButton->setEnabled(true);
647       qtarch_ButtonGroup_6->setEnabled(true); 
648
649       int j =defaultCombBox->count();
650       int state=0;
651       for (int a=0;a<j;a++) {
652         if (!(strcmp(defaultCombBox->text(a),i18n("a2ps default")))) {
653           defaultCombBox->removeItem(a);
654           a--;
655           j--;
656         }
657         if (!(strcmp(defaultCombBox->text(a),i18n("lineprinter"))) ||
658             !(strcmp(defaultCombBox->text(a),i18n("enscript default")))) {
659           state++;
660         }
661       }
662       if (state == 0) {
663       defaultCombBox->insertItem(i18n("enscript default"));
664       defaultCombBox->insertItem(i18n("lineprinter"));
665       }
666       mediaCombBox->clear();
667       mediaCombBox->insertItem( "a4" );
668       mediaCombBox->insertItem( "a3" );
669       mediaCombBox->insertItem( "a5" );
670       mediaCombBox->insertItem( "legal" );
671       mediaCombBox->insertItem( "letter" );
672       mediaCombBox->insertItem( "a4dj" );
673       mediaCombBox->insertItem( "letterdj" );
674     }
675   else if (i==0) {
676     
677     prettyPrintCheckBox->setEnabled(false);
678     formatCombBox->setEnabled(false);
679     pageSide->setEnabled(false);
680     qtarch_ButtonGroup_9->setEnabled(false);
681     qtarch_ButtonGroup_11->setEnabled(false);
682     qtarch_ButtonGroup_3->setEnabled(false);
683     defaultCombBox->setEnabled(true);
684     mediaCombBox->setEnabled(true);
685     paperFormatGroup->setEnabled(true);
686     pagePerSide->setEnabled(true);
687     paperCombBox->setEnabled(true);
688     qtarch_ButtonGroup_4->setEnabled(true);
689     qtarch_ButtonGroup_10->setEnabled(true);
690     qtarch_ButtonGroup_8->setEnabled(true);
691     qtarch_ButtonGroup_35->setEnabled(true);
692     printingConfButton->setEnabled(false);
693     previewButton->setEnabled(true);
694     printToFileDlg->setEnabled(printToFileButton->isChecked());
695     printToFileButton->setEnabled(true);
696     qtarch_ButtonGroup_6->setEnabled(true);
697     
698     prettyPrintCheckBox->setChecked(false);
699     prettyCombBox->setEnabled(false);
700     prettyColorCheckBox->setEnabled(false);
701     prettyPrintCheckBox->setChecked(false);
702     qtarch_ButtonGroup_34->setEnabled(false);
703     //slotPrettyPrintClicked(false);
704     int j =defaultCombBox->count();
705     int state=0;
706     for (int a=0;a<j;a++) {
707       if (!(strcmp(defaultCombBox->text(a),i18n("lineprinter"))) ||
708           !(strcmp(defaultCombBox->text(a),i18n("enscript default")))) {
709         defaultCombBox->removeItem(a);
710         a--;
711         j--;
712       }
713       if (!(strcmp(defaultCombBox->text(a),i18n("a2ps default"))) ||
714           !(strcmp(defaultCombBox->text(a),i18n("a2ps default")))) {
715         state++;
716       }
717     }
718     if (state == 0) {
719       defaultCombBox->insertItem(i18n("a2ps default"));
720     }
721     mediaCombBox->clear();
722     mediaCombBox->insertItem( "a4" );
723     mediaCombBox->insertItem( "a3" );
724     mediaCombBox->insertItem( "a5" );
725     mediaCombBox->insertItem( "legal" );
726     mediaCombBox->insertItem( "letter" );
727   }
728   else {
729     
730     prettyPrintCheckBox->setEnabled(false);
731     formatCombBox->setEnabled(false);
732     pageSide->setEnabled(false);
733     qtarch_ButtonGroup_9->setEnabled(false);
734     qtarch_ButtonGroup_11->setEnabled(false);
735     qtarch_ButtonGroup_3->setEnabled(false);
736     defaultCombBox->setEnabled(false);
737     mediaCombBox->setEnabled(false);
738     paperFormatGroup->setEnabled(false);
739     pagePerSide->setEnabled(false);
740     paperCombBox->setEnabled(false);
741     qtarch_ButtonGroup_4->setEnabled(false);
742     qtarch_ButtonGroup_10->setEnabled(false);
743     qtarch_ButtonGroup_8->setEnabled(false);
744     qtarch_ButtonGroup_35->setEnabled(false);
745     printingConfButton->setEnabled(false);
746     previewButton->setEnabled(false);
747     printToFileDlg->setEnabled(printToFileButton->isChecked());
748     printToFileButton->setEnabled(true);
749     qtarch_ButtonGroup_6->setEnabled(true);
750     
751     prettyPrintCheckBox->setChecked(false);
752     prettyCombBox->setEnabled(false);
753     prettyColorCheckBox->setEnabled(false);
754     prettyPrintCheckBox->setChecked(false);
755     qtarch_ButtonGroup_34->setEnabled(false);
756     //slotPrettyPrintClicked(false);
757   }
758 }
759
760 void CPrintDlg::slotPrettyPrintClicked(bool status) {
761   if (prettyPrintCheckBox->isEnabled()) {
762     if (status) 
763       {
764         prettyCombBox->setEnabled(true);
765         prettyColorCheckBox->setEnabled(true);
766         qtarch_ButtonGroup_34->setEnabled(true);
767       }
768     else
769       {
770         prettyCombBox->setEnabled(false);
771         prettyColorCheckBox->setEnabled(false);
772         prettyPrintCheckBox->setChecked(false);
773         prettyColorCheckBox->setChecked(false);
774         qtarch_ButtonGroup_34->setEnabled(false);
775       }
776   }
777   else {
778     prettyPrintCheckBox->setChecked(false);
779     prettyCombBox->setEnabled(false);
780     prettyColorCheckBox->setEnabled(false);
781     prettyPrintCheckBox->setChecked(false);
782     prettyColorCheckBox->setChecked(false);
783     qtarch_ButtonGroup_34->setEnabled(false);
784   }
785 }
786
787 void CPrintDlg::slotPrintToFileClicked(bool status) {
788   if (status) 
789     {
790       printToFileDlg->setEnabled(true);
791       printToFileLine->setEnabled(true);
792     }
793   else
794     {
795       printToFileDlg->setEnabled(false);
796       printToFileLine->setEnabled(false);
797     }
798 }
799
800 void CPrintDlg::slotCancelClicked() {
801   reject();
802 }
803
804 void CPrintDlg::slotCreateParameters() {
805    QString parameters;
806   parameters = "";
807   string = "";
808   if (programCombBox->currentItem()==0) {
809     if (defaultCombBox->currentItem()==0) {
810       if (strcmp (printerLine->text(),"default")) {
811                                 parameters = (QString) "-P" + printerLine->text() + (QString) " ";
812       }
813       //parameters = parameters + globalpara;
814       parameters = parameters + (QString) " -M" + mediaCombBox->text(mediaCombBox->currentItem());
815       if (pagePerSide->currentItem()==0) {
816         parameters.append(" -1");
817       }
818       else {
819         parameters.append(" -2");
820       }
821       if (paperCombBox->currentItem()==0) {
822         parameters.append(" -R");
823       }
824       else {
825         parameters.append(" -r");
826       }
827     }
828     else 
829       if (defaultCombBox->currentItem()==1) {
830         parameters = "";
831       }
832     string = parameters;
833   }
834   else if (programCombBox->currentItem()==1) {
835     if (defaultCombBox->currentItem()==0) {
836       if (strcmp (printerLine->text(),"default")) {
837         parameters = (QString) "--printer=" + printerLine->text();
838       }
839       parameters.append ((QString)" " + globalpara);
840       if (!strcmp(mediaCombBox->text(mediaCombBox->currentItem()),"a4")) {
841         parameters.append (" --media=A4");
842       }
843       else if (!strcmp(mediaCombBox->text(mediaCombBox->currentItem()),"a3")) {
844         parameters.append (" --media=A3");
845       }
846       else if (!strcmp(mediaCombBox->text(mediaCombBox->currentItem()),"a5")) {
847         parameters.append (" --media=A5");
848       }
849       else if (!strcmp(mediaCombBox->text(mediaCombBox->currentItem()),"legal")) {
850         parameters.append (" --media=Legal");
851       }
852       else if (!strcmp(mediaCombBox->text(mediaCombBox->currentItem()),"letter")) {
853         parameters.append (" --media=Letter");
854       }
855       else if (!strcmp(mediaCombBox->text(mediaCombBox->currentItem()),"a4dj")) {
856         parameters.append (" --media=A4dj");
857       }
858       else {
859         parameters.append (" --media=Letterdj");
860       }
861
862       if (!strcmp(pageSide->currentText(),i18n ("all"))) {
863       }
864       else if (!strcmp(pageSide->currentText(),i18n ( "odd" ))) {
865         parameters.append ((QString)" --pages=odd");
866       }
867       else if (!strcmp(pageSide->currentText(),i18n( "even" ))) {
868         parameters.append ((QString)" --pages=even");
869       }
870       else {
871         parameters.append ((QString)" --pages=" + pageSide->currentText());
872       }
873       if (prettyColorCheckBox->isChecked()) {
874         parameters.append(" --color");
875       }
876       if (prettyPrintCheckBox->isChecked()) {
877         if (prettyCombBox->currentItem()==0) {
878           parameters.append (" --pretty-print=ada");
879         }
880         else if (prettyCombBox->currentItem()==1) {
881           parameters.append (" --pretty-print=awk");
882         }
883         else if (prettyCombBox->currentItem()==2) {
884           parameters.append (" --pretty-print=c");
885         }
886         else if (prettyCombBox->currentItem()==3) {
887           parameters.append (" --pretty-print=changelog");
888         }
889         else if (prettyCombBox->currentItem()==4) {
890           parameters.append (" --pretty-print=cpp");
891         }
892         else if (prettyCombBox->currentItem()==5) {
893           parameters.append (" --pretty-print=diff");
894         }
895         else if (prettyCombBox->currentItem()==6) {
896           parameters.append (" --pretty-print=diffu");
897         }
898         else if (prettyCombBox->currentItem()==7) {
899           parameters.append (" --pretty-print=delphi");
900         }
901         else if (prettyCombBox->currentItem()==8) {
902           parameters.append (" --pretty-print=elisp");
903         }
904         else if (prettyCombBox->currentItem()==9) {
905           parameters.append (" --pretty-print=fortran");
906         }
907         else if (prettyCombBox->currentItem()==10) {
908           parameters.append (" --pretty-print=heskell");
909         }
910         else if (prettyCombBox->currentItem()==11) {
911           parameters.append (" --pretty-print=html");
912         }
913         else if (prettyCombBox->currentItem()==12) {
914           parameters.append (" --pretty-print=java");
915         }
916         else if (prettyCombBox->currentItem()==13) {
917           parameters.append (" --pretty-print=javascript");
918         }
919         else if (prettyCombBox->currentItem()==14) {
920           parameters.append (" --pretty-print=mail");
921         }
922         else if (prettyCombBox->currentItem()==15) {
923           parameters.append (" --pretty-print=makefile");
924         }
925         else if (prettyCombBox->currentItem()==16) {
926           parameters.append (" --pretty-print=nroff");
927         }
928         else if (prettyCombBox->currentItem()==17) {
929           parameters.append (" --pretty-print=objc");
930         }
931         else if (prettyCombBox->currentItem()==18) {
932           parameters.append (" --pretty-print=pascal");
933         }
934         else if (prettyCombBox->currentItem()==19) {
935           parameters.append (" --pretty-print=perl");
936         }
937         else if (prettyCombBox->currentItem()==20) {
938           parameters.append (" --pretty-print=postscript");
939         }
940         else if (prettyCombBox->currentItem()==21) {
941           parameters.append (" --pretty-print=scheme");
942         }
943         else if (prettyCombBox->currentItem()==22) {
944           parameters.append (" --pretty-print=sh");
945         }
946         else if (prettyCombBox->currentItem()==23) {
947           parameters.append (" --pretty-print=sql");
948         }
949         else if (prettyCombBox->currentItem()==24) {
950           parameters.append (" --pretty-print=states");
951         }
952         else if (prettyCombBox->currentItem()==25) {
953           parameters.append (" --pretty-print=synopsys");
954         }
955         else if (prettyCombBox->currentItem()==26) {
956           parameters.append (" --pretty-print=tcl");
957         }
958         else if (prettyCombBox->currentItem()==27) {
959           parameters.append (" --pretty-print=verilog");
960         }
961         else {
962           parameters.append (" --pretty-print=vhdl");
963         }
964       }
965       if (pagePerSide->currentItem()==1 && paperCombBox->currentItem()==0) {
966         parameters.append(" -r -U2");
967       }
968       else if (pagePerSide->currentItem()==1 && paperCombBox->currentItem()==1) {
969         parameters.append(" -r -2");
970       }
971       else {
972         parameters.append(" -1");
973         if (paperCombBox->currentItem()==0) {
974           parameters.append(" -R");
975         }
976         else {
977           parameters.append(" -r");
978         }
979       }
980       if (formatCombBox->currentItem()==0) {
981         parameters.append(" --language=PostScript");
982       }
983       else {
984         parameters.append(" --language=html");
985       }
986     }
987     else 
988       if (defaultCombBox->currentItem()==1) {
989         parameters = "";
990       }
991       else {
992         parameters = "-l";
993       }
994     string = parameters;
995   }
996   else {
997     if (strcmp (printerLine->text(),"default")) {
998       parameters = (QString) "-P" + printerLine->text() + (QString) " ";
999     }
1000     string = parameters;
1001   }
1002 }
1003
1004 void CPrintDlg::slotPreviewClicked() {
1005   if (!(lookProgram("gv") || lookProgram("ghostview") || lookProgram("kghostview"))) {
1006     KMessageBox::information(0,i18n("KDevelop needs \"gv\" or \"ghostview\" or \"kghostview\" to work properly.\n\t\t    Please install one!"),i18n("Program not found!"));
1007     return;
1008   }
1009   files = createFileString();
1010   if (!strcmp(files,"")) {
1011     KMessageBox::error(0,i18n("No file is printing!"),i18n("No File"));
1012     return;
1013   }
1014   else {
1015     QString dir,data1,data2,text;
1016     if ((programCombBox->currentItem()==1) && (formatCombBox->currentItem()==1)) {
1017       dir = locate("appdata", "preview.html");
1018     }
1019     else {
1020       dir =  locate("appdata", "preview.ps");
1021     }
1022     data1 = locate("appdata", "templates/preview1");
1023     data2 = locate("appdata", "templates/preview2");
1024     process = new KShellProcess();
1025     if (programCombBox->currentItem()==1) {
1026       text = (QString) " --output="+ dir;
1027       settings = KGlobal::config();
1028       settings->setGroup("LastSettings");
1029       globalpara = settings->readEntry("EnscriptSettings");
1030       slotCreateParameters();
1031       *process << removeNullParams("enscript " + string + " " + text + " " + files);
1032     }
1033     else {
1034       //settings = KGlobal::config();
1035       //settings->setGroup("LastSettings");
1036       //  globalpara = settings->readEntry("A2psSettings");
1037       slotCreateParameters();
1038       *process << removeNullParams("a2ps " + string + " -o " + dir + " " + files);
1039     }
1040     process->start(KProcess::Block,KProcess::AllOutput);
1041     delete (process);
1042     process2 = new KShellProcess();
1043     if ((programCombBox->currentItem()==1) && (formatCombBox->currentItem()==1)) {
1044       *process2 << "kdehelp";
1045       *process2 << dir;
1046       process2->start(KProcess::NotifyOnExit,KProcess::AllOutput);
1047       return;
1048     }
1049     else {
1050       if (lookProgram("gv")) {
1051         *process2 << "gv";
1052         *process2 << dir;
1053         process2->start(KProcess::NotifyOnExit,KProcess::AllOutput);
1054         return;
1055       }
1056       else if (lookProgram("ghostview")) {
1057         *process2 << "ghostview";
1058         *process2 << dir;
1059         process2->start(KProcess::NotifyOnExit,KProcess::AllOutput);
1060         return;
1061       }
1062       else if (lookProgram("kghostview")) {
1063         *process2 << "kghostview";
1064         *process2 << dir;
1065         process2->start(KProcess::NotifyOnExit,KProcess::AllOutput);
1066         return;
1067       }
1068     }
1069   }
1070 }
1071
1072 void CPrintDlg::slotFilesConfClicked() {
1073   CFilePrintDlg *fileconf = new CFilePrintDlg(this, "filedialog");
1074   fileconf->setCaption("FilePrintDialog");
1075   fileconf->exec(); 
1076   delete (fileconf);
1077 }
1078
1079 void CPrintDlg::slotPrintingConfClicked() {
1080   int prog=programCombBox->currentItem();
1081   if (prog==0) {
1082     if (!CToolClass::searchProgram("a2ps")) {
1083       return;
1084     }
1085     a2psconf = new CConfigA2psDlg(this, "confdialog");
1086     a2psconf->resize(600,430);
1087     a2psconf->setCaption("A2ps Configdialog");
1088     a2psconf->exec();
1089     settings = KGlobal::config();
1090   settings->setGroup("LastSettings");
1091   globalpara = settings->readEntry("A2psSettings");
1092   delete (a2psconf);
1093   }
1094   else
1095     if (prog==1) {
1096       if (!CToolClass::searchProgram("enscript")) {
1097         return;
1098       }
1099       enscriptconf = new CConfigEnscriptDlg(this, "confdialog");
1100       enscriptconf->resize(610,510);
1101       enscriptconf->setCaption("Enscript Configdialog");
1102       enscriptconf->exec();
1103       settings = KGlobal::config();
1104       settings->setGroup("LastSettings");
1105       globalpara = settings->readEntry("EnscriptSettings");
1106       delete (enscriptconf);
1107     }
1108 }
1109
1110 void CPrintDlg::slotPrintToFileDlgClicked() {
1111   printToFileLine->setText(KFileDialog::getOpenFileName());
1112 }
1113
1114 //bool CPrintDlg::lookProgram(QString name) {
1115 //
1116 //  QStringList paths;
1117 //  bool found=false;
1118 //  QString complete_path = getenv("PATH");
1119 //  paths = QStringList::split ( ":", complete_path, FALSE );
1120 //
1121 //  for ( QStringList::Iterator it = paths.begin(); it != paths.end(); ++it )
1122 //  {
1123 //    if (QFile::exists((*it) + "/" + name))
1124 //    {
1125 //      found = true;
1126 //      break;
1127 //    }
1128 //  }
1129 //  return found;
1130 //}
1131
1132 void CPrintDlg::slotOkClicked() {
1133   settings = KGlobal::config();
1134   settings->setGroup("PrintDialog");
1135   settings->writeEntry("Program",programCombBox->currentItem());
1136   settings->writeEntry("Printer",printerLine->text());
1137   settings->writeEntry("PagePrinting",pagePerSide->currentItem());
1138   settings->writeEntry("Pages",pageSide->currentItem());
1139   settings->writeEntry("PrettyMode",prettyCombBox->currentItem());
1140   settings->writeEntry("PaperFormat",formatCombBox->currentItem());
1141   settings->writeEntry("Copy",copySpinBox->value());
1142   settings->writeEntry("OutputMedia",mediaCombBox->currentItem());
1143   settings->writeEntry("OutputFormat",formatCombBox->currentItem());
1144   settings->writeEntry("Default",defaultCombBox->currentItem());
1145   settings->writeEntry("PrettyPrintButton",prettyPrintCheckBox->isChecked());
1146   settings->writeEntry("PrettyColor",prettyColorCheckBox->isChecked());
1147   settings->writeEntry("PrintToFileButton",printToFileButton->isChecked());
1148   settings->writeEntry("PrintToFileLine",printToFileLine->text());
1149   settings->sync();
1150
1151   if (!(lookProgram("gv") || lookProgram("ghostview") || lookProgram("kghostview"))) {
1152     KMessageBox::error(0,i18n("KDevelop needs \"gv\" or \"ghostview\" or \"kghostview\" to work properly.\n\t\t    Please install one!"),
1153                         i18n("Program not found!"));
1154     return;
1155   }
1156   if (printToFileButton->isChecked()) {
1157     QString filetext = printToFileLine->text();
1158     if (!strcmp(filetext.right(1),"/") || !strcmp(printToFileLine->text(),"")) {
1159       KMessageBox::error(0,i18n("You need a filename.\nPlease enter one!"),
1160                             i18n("No Filename"));
1161       return;
1162     }
1163   }
1164   files = createFileString();
1165   if (!strcmp(files,"")) {
1166     KMessageBox::error(0,i18n("No file is printing!"),i18n("No File"));
1167     return;
1168   }
1169   else {
1170     QString dir="";
1171     QString data1,data2;
1172     QString text="";
1173     process = new KShellProcess();
1174     if (programCombBox->currentItem()==1) {
1175       if (printToFileButton->isChecked()) {
1176         dir =  printToFileLine->text();
1177         text = (QString) " --output="+ dir;
1178         settings = KGlobal::config();
1179         settings->setGroup("LastSettings");
1180         globalpara = settings->readEntry("EnscriptSettings");
1181         slotCreateParameters();
1182         process->clearArguments();
1183         *process << removeNullParams("enscript " + string + text + " " + files);
1184 //      cerr << "enscript " + string + text + " " + files << endl;
1185         process->start(KProcess::Block,KProcess::AllOutput);
1186       }
1187       else {
1188         settings = KGlobal::config();
1189         settings->setGroup("LastSettings");
1190         globalpara = settings->readEntry("EnscriptSettings");
1191         slotCreateParameters();
1192         for (int i=0;i<((QString) copySpinBox->text()).toInt();i++) {
1193           process->clearArguments();
1194           *process << removeNullParams("enscript " + string + " " + files);
1195           process->start(KProcess::Block,KProcess::AllOutput);
1196         }
1197       }
1198     }
1199     else if (programCombBox->currentItem()==0) {
1200       //settings = KGlobal::config();
1201       //settings->setGroup("LastSettings");
1202       //      globalpara = settings->readEntry("A2psSettings");
1203 //      kdDebug() << string << endl;
1204       string = "";
1205       slotCreateParameters();
1206       if (printToFileButton->isChecked()) {
1207         dir =  printToFileLine->text();
1208         process->clearArguments();
1209 //      cerr << "a2ps " + string + " -o " + dir + " " + files << endl;
1210         *process << removeNullParams("a2ps " + string + " -o " + dir + " " + files);
1211         process->start(KProcess::Block,KProcess::AllOutput);
1212       }
1213       else {
1214         for (int i=0;i<((QString) copySpinBox->text()).toInt();i++) {
1215           process->clearArguments();
1216           *process << removeNullParams("a2ps " + string + " " + files);
1217           process->start(KProcess::Block,KProcess::AllOutput);
1218         }
1219       }
1220     }
1221     else {
1222       if (printToFileButton->isChecked()) {
1223         dir =  printToFileLine->text();
1224         process->clearArguments();
1225         *process << removeNullParams("lpr " + string + " " + files + " > " + dir);
1226 //      cerr << "lpr " + string + " " + files + " > " + dir << endl;
1227         process->start(KProcess::Block,KProcess::AllOutput);
1228       }
1229       else {
1230         for (int i=0;i<((QString) copySpinBox->text()).toInt();i++) {
1231           process->clearArguments();
1232           *process << removeNullParams("lpr " + string + " " + files);
1233 //        cerr << "lpr " + string + " " + files << endl;
1234           process->start(KProcess::Block,KProcess::AllOutput);
1235         }
1236       } 
1237     }
1238     delete (process);
1239     reject();
1240   }
1241 }
1242
1243 QString CPrintDlg::createFileString() {
1244   globalpara = "";
1245   QString str = "";
1246   QString sources = "";
1247   QString dir = "";
1248   QString underdir = "";
1249   QString prj_str2 = "";
1250   QString test="";
1251   QString test2 = "";
1252   QStrList filelist;
1253   settings = KGlobal::config();
1254   settings->setGroup("LastSettings");
1255   globalpara = settings->readEntry("FileSettings");
1256   settings->setGroup("Files");
1257   prj_str2 = settings->readEntry("project_file");
1258   CProject *project = new CProject(prj_str2);
1259   project->readProject();
1260   prj_str2.truncate(prj_str2.findRev("/"));
1261   test = prj_str2;
1262   test2 = prj_str2;
1263   test.truncate(test.findRev("/"));
1264   underdir = test2.remove(0,test.length());
1265   if (!strcmp(globalpara,"current")) {
1266     delete (project);
1267     return oldfiles;
1268   }
1269   else if (!strcmp(globalpara,"cppFiles")) {
1270     filelist = project->getSources();
1271     for(str= filelist.first();str !=0;str = filelist.next()){
1272       sources =  str + " " + sources ;
1273     }
1274     delete (project);
1275     return sources;
1276   }
1277   else if (!strcmp(globalpara,"allFiles")) {
1278     project->getAllFiles(filelist);
1279     for(str= filelist.first();str !=0;str = filelist.next()){
1280       sources =  prj_str2 + "/" + str + " " + sources ;
1281     }
1282     delete (project);
1283     return sources;
1284   }
1285   else if (!strcmp(globalpara,"headerFiles")) {
1286     filelist = project->getHeaders();
1287     for(str= filelist.first();str !=0;str = filelist.next()){
1288       sources =  str + " " + sources ;
1289     }
1290     delete (project);
1291     return sources;
1292   } 
1293   else {
1294     delete (project);
1295     return globalpara;
1296   } 
1297 }
1298
1299 void CPrintDlg::loadSettings() {
1300   settings = KGlobal::config();
1301   settings->setGroup("PrintDialog");
1302   programCombBox->setCurrentItem(settings->readNumEntry("Program"));
1303   if (programCombBox->currentItem()==0) {
1304     slotProgramActivated(0);
1305   }
1306   else if (programCombBox->currentItem()==1) {
1307     slotProgramActivated(1);
1308   }
1309   else {
1310     slotProgramActivated(2);
1311   }
1312   printerLine->setText(settings->readEntry("Printer"));
1313   printToFileButton->setChecked(settings->readBoolEntry("PrintToFileButton"));
1314   if (printToFileButton->isChecked()) {
1315     slotPrintToFileClicked(true);
1316   }
1317   else {
1318     slotPrintToFileClicked(false);
1319   }
1320   printToFileLine->setText(settings->readEntry("PrintToFileLine"));
1321   pagePerSide->setCurrentItem(settings->readNumEntry("PagePrinting"));
1322   pageSide->setCurrentItem(settings->readNumEntry("Pages"));
1323   prettyColorCheckBox->setChecked(settings->readBoolEntry("PrettyColor"));
1324   prettyPrintCheckBox->setChecked(settings->readBoolEntry("PrettyPrintButton"));
1325   if (prettyPrintCheckBox->isChecked()) {
1326     slotPrettyPrintClicked(true);
1327   }
1328   else {
1329     slotPrettyPrintClicked(false);
1330   }
1331   prettyCombBox->setCurrentItem(settings->readNumEntry("PrettyMode"));
1332   formatCombBox->setCurrentItem(settings->readNumEntry("PaperFormat"));
1333   copySpinBox->setValue(settings->readNumEntry("Copy"));
1334   mediaCombBox->setCurrentItem(settings->readNumEntry("OutputMedia"));
1335   formatCombBox->setCurrentItem(settings->readNumEntry("OutputFormat"));
1336   defaultCombBox->setCurrentItem(settings->readNumEntry("Default"));
1337 }
1338
1339 #include "cprintdlg.moc"