00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include <qtabwidget.h>
00013
#include <qbuttongroup.h>
00014
#include <qcheckbox.h>
00015
#include <qlineedit.h>
00016
#include <qspinbox.h>
00017
#include <qradiobutton.h>
00018
#include <qcombobox.h>
00019
#include <qmultilineedit.h>
00020
#include <qslider.h>
00021
#include <qheader.h>
00022
00023
00024
#include <kdevproject.h>
00025
#include <kfiledialog.h>
00026
#include <klocale.h>
00027
#include <kmessagebox.h>
00028
#include <kdebug.h>
00029
#include <kstandarddirs.h>
00030
#include <kfileitem.h>
00031
#include <kurlrequester.h>
00032
#include <klistview.h>
00033
#include <knuminput.h>
00034
#include <kmainwindow.h>
00035
00036
00037
#include <domutil.h>
00038
#include <kdevcoderepository.h>
00039
#include <kdevmainwindow.h>
00040
#include <kdevcoderepository.h>
00041
#include <catalog.h>
00042
00043
#include "ccconfigwidget.h"
00044
#include "cppsupportpart.h"
00045
#include "cppcodecompletionconfig.h"
00046
#include "createpcsdialog.h"
00047
00048
using namespace std;
00049
00050
00051 CCConfigWidget::CCConfigWidget(
CppSupportPart* part,
QWidget* parent,
const char* name )
00052 :
CCConfigWidgetBase( parent, name )
00053 {
00054
m_pPart = part;
00055 connect(
m_pPart->
codeRepository(), SIGNAL(
catalogRegistered(
Catalog* )),
this, SLOT(
catalogRegistered(
Catalog* )) );
00056 connect(
m_pPart->
codeRepository(), SIGNAL(
catalogUnregistered(
Catalog* )),
this, SLOT(
catalogUnregistered(
Catalog* )) );
00057
00058
initFileTemplatesTab( );
00059
initCodeCompletionTab( );
00060
00061 inputCodeCompletion->
setRange( 0, 2000, 100 );
00062 inputArgumentsHint->
setRange( 0, 2000, 100 );
00063 }
00064
00065 void CCConfigWidget::initFileTemplatesTab( )
00066 {
00067
QDomDocument dom = *
m_pPart->
projectDom();
00068 interface_suffix->setText(DomUtil::readEntry(dom,
"/cppsupportpart/filetemplates/interfacesuffix",
".h"));
00069 implementation_suffix->setText(DomUtil::readEntry(dom,
"/cppsupportpart/filetemplates/implementationsuffix",
".cpp"));
00070 }
00071
00072 CCConfigWidget::~CCConfigWidget( )
00073 {
00074 }
00075
00076 void CCConfigWidget::accept( )
00077 {
00078
saveFileTemplatesTab();
00079
saveCodeCompletionTab();
00080 }
00081
00082 void CCConfigWidget::saveFileTemplatesTab( )
00083 {
00084
QDomDocument dom = *
m_pPart->
projectDom();
00085 DomUtil::writeEntry(dom,
"/cppsupportpart/filetemplates/interfacesuffix",interface_suffix->text());
00086 DomUtil::writeEntry(dom,
"/cppsupportpart/filetemplates/implementationsuffix",implementation_suffix->text());
00087 }
00088
00089 void CCConfigWidget::initCodeCompletionTab( )
00090 {
00091 advancedOptions->header()->hide();
00092
00093
CppCodeCompletionConfig* c =
m_pPart->
codeCompletionConfig();
00094
00095 inputCodeCompletion->
setValue( c->
codeCompletionDelay() );
00096 inputArgumentsHint->
setValue( c->
argumentsHintDelay() );
00097 checkAutomaticCodeCompletion->setChecked( c->
automaticCodeCompletion() );
00098 checkAutomaticArgumentsHint->setChecked( c->
automaticArgumentsHint() );
00099
00100
QListViewItem* codeCompletionOptions =
new QListViewItem( advancedOptions, i18n(
"Code Completion Options") );
00101 codeCompletionOptions->setExpandable(
true );
00102
00103
00104
00105
m_includeGlobalFunctions =
new QCheckListItem( codeCompletionOptions, i18n(
"Include Global Functions"), QCheckListItem::CheckBox );
00106
m_includeGlobalFunctions->setOn( c->
includeGlobalFunctions() );
00107
00108
m_includeTypes =
new QCheckListItem( codeCompletionOptions, i18n(
"Include Types"), QCheckListItem::CheckBox );
00109
m_includeTypes->setOn( c->
includeTypes() );
00110
00111
m_includeEnums =
new QCheckListItem( codeCompletionOptions, i18n(
"Include Enums"), QCheckListItem::CheckBox );
00112
m_includeEnums->setOn( c->
includeEnums() );
00113
00114
m_includeTypedefs =
new QCheckListItem( codeCompletionOptions, i18n(
"Include Typedefs"), QCheckListItem::CheckBox );
00115
m_includeTypedefs->setOn( c->
includeTypedefs() );
00116
00117
m_pcsOptions =
new QListViewItem( advancedOptions, i18n(
"Persistant Class Store") );
00118
QValueList<Catalog*> catalogs =
m_pPart->
codeRepository()->
registeredCatalogs();
00119
for(
QValueList<Catalog*>::Iterator it=catalogs.begin(); it!=catalogs.end(); ++it )
00120 {
00121
Catalog* c = *it;
00122
QFileInfo dbInfo( c->
dbName() );
00123 QCheckListItem* item =
new QCheckListItem(
m_pcsOptions, dbInfo.baseName(), QCheckListItem::CheckBox );
00124 item->setOn( c->
enabled() );
00125
00126
m_catalogs[ item ] = c;
00127 }
00128 }
00129
00130 void CCConfigWidget::saveCodeCompletionTab( )
00131 {
00132
CppCodeCompletionConfig* c =
m_pPart->
codeCompletionConfig();
00133
00134 c->
setCodeCompletionDelay( inputCodeCompletion->
value() );
00135 c->
setArgumentsHintDelay( inputArgumentsHint->
value() );
00136
00137 c->
setAutomaticCodeCompletion( checkAutomaticCodeCompletion->isChecked() );
00138 c->
setAutomaticArgumentsHint( checkAutomaticArgumentsHint->isChecked() );
00139
00140 c->
setIncludeGlobalFunctions(
m_includeGlobalFunctions->isOn() );
00141 c->
setIncludeTypes(
m_includeTypes->isOn() );
00142 c->
setIncludeEnums(
m_includeEnums->isOn() );
00143 c->
setIncludeTypedefs(
m_includeTypedefs->isOn() );
00144
00145
for(
QMap<QCheckListItem*, Catalog*>::Iterator it=
m_catalogs.begin(); it!=
m_catalogs.end(); ++it )
00146 {
00147 it.data()->setEnabled( it.key()->isOn() );
00148 }
00149
00150 c->
store();
00151 }
00152
00153 void CCConfigWidget::slotNewPCS( )
00154 {
00155
CreatePCSDialog dlg(
m_pPart,
m_pPart->
mainWindow()->
main() );
00156 dlg.
importerListView->setFocus();
00157 dlg.exec();
00158 }
00159
00160 void CCConfigWidget::catalogRegistered(
Catalog * c )
00161 {
00162
QFileInfo dbInfo( c->
dbName() );
00163
QCheckListItem* item =
new QCheckListItem(
m_pcsOptions, dbInfo.baseName(), QCheckListItem::CheckBox );
00164 item->setOn( c->
enabled() );
00165
00166
m_catalogs[ item ] = c;
00167 }
00168
00169 void CCConfigWidget::catalogUnregistered(
Catalog * c )
00170 {
00171
for(
QMap<QCheckListItem*, Catalog*>::Iterator it=
m_catalogs.begin(); it!=
m_catalogs.end(); ++it )
00172 {
00173
if( it.data() == c ){
00174
QCheckListItem* item = it.key();
00175
delete( item );
00176
m_catalogs.remove( it );
00177
break;
00178 }
00179 }
00180 }
00181
00182
#include "ccconfigwidget.moc"