diff options
| author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
|---|---|---|
| committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
| commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
| tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /buildtools/autotools/addtargetdlg.cpp | |
| download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip | |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'buildtools/autotools/addtargetdlg.cpp')
| -rw-r--r-- | buildtools/autotools/addtargetdlg.cpp | 226 | 
1 files changed, 226 insertions, 0 deletions
| diff --git a/buildtools/autotools/addtargetdlg.cpp b/buildtools/autotools/addtargetdlg.cpp new file mode 100644 index 00000000..b01b5b82 --- /dev/null +++ b/buildtools/autotools/addtargetdlg.cpp @@ -0,0 +1,226 @@ +/*************************************************************************** + *   Copyright (C) 2001 by Bernd Gehrmann                                  * + *   bernd@kdevelop.org                                                    * + *                                                                         * + *   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.                                   * + *                                                                         * + ***************************************************************************/ + +#include "addtargetdlg.h" + +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qgroupbox.h> +#include <qvalidator.h> + +#include <klineedit.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <ksqueezedtextlabel.h> + +#include "autolistviewitems.h" + +#include "misc.h" +#include "autodetailsview.h" +#include "autoprojectwidget.h" + + +AddTargetDialog::AddTargetDialog(AutoProjectWidget *widget, SubprojectItem *item, +								QWidget *parent, const char *name) +	: AddTargetDialogBase(parent, name, true) +{ +	m_subproject = item; +	m_widget = widget; +// 	m_detailsView = view; + +	primary_combo->setFocus(); +	primary_combo->insertItem(i18n("Program")); +	primary_combo->insertItem(i18n("Library")); +	primary_combo->insertItem(i18n("Libtool Library")); +	primary_combo->insertItem(i18n("Script")); +	primary_combo->insertItem(i18n("Header")); +	primary_combo->insertItem(i18n("Data File")); +	primary_combo->insertItem(i18n("Java")); + +	primaryChanged(); // updates prefix combo + +	if (widget->kdeMode()) +		ldflagsother_edit->setText("$(all_libraries)"); + +	connect( filename_edit, SIGNAL( textChanged(const QString&) ), this, SLOT( slotFileNameChanged (const QString&) ) ); + +	setIcon ( SmallIcon ( "targetnew_kdevelop.png" ) ); + +	canonicalLabel->setText ( QString::null ); +} + + +AddTargetDialog::~AddTargetDialog() +{} + + +void AddTargetDialog::primaryChanged() +{ +	QStringList list; +	switch (primary_combo->currentItem()) { +	case 0: // Program +		list.append("bin"); +		list.append("sbin"); +		list.append("libexec"); +		list.append("pkglib"); +		list.append("noinst"); +		break; +	case 1: // Library +	case 2: // Libtool library +		list.append("lib"); +		list.append("pkglib"); +		list.append("noinst"); +		if (m_widget->kdeMode()) +			list.append("kde_module"); +		break; +	case 3: // Script +		list.append("bin"); +		list.append("sbin"); +		list.append("libexec"); +		list.append("pkgdata"); +		list.append("noinst"); +		break; +	case 4: // Header +		list.append("include"); +		list.append("oldinclude"); +		list.append("pkginclude"); +		list.append("noinst"); +		break; +	case 5: // Data +		list.append("bin"); +		list.append("sbin"); +		list.append("noinst"); +		break; +	case 6: // Java +		list.append("java"); +		list.append("noinst"); +		break; +	} + +	prefix_combo->clear(); + +	prefix_combo->insertStringList(list); +	QStringList prefixes; +	QMap<QString,QString>::ConstIterator it; +	for (it = m_subproject->prefixes.begin(); it != m_subproject->prefixes.end(); ++it) +		prefix_combo->insertItem(it.key()); + +	// Only enable ldflags stuff for libtool libraries +	bool lt = primary_combo->currentItem() == 2; +	bool prog = primary_combo->currentItem() == 0; +	allstatic_box->setEnabled(lt); +	avoidversion_box->setEnabled(lt); +	module_box->setEnabled(lt); +	noundefined_box->setEnabled(lt); +	ldflagsother_edit->setEnabled(lt || prog); +} + + +void AddTargetDialog::accept() +{ +	QString name = filename_edit->text().stripWhiteSpace(); +	QString prefix = prefix_combo->currentText(); + +	QString primary; +	switch (primary_combo->currentItem()) { +	case 0: primary = "PROGRAMS";    break; +	case 1: primary = "LIBRARIES";   break; +	case 2: primary = "LTLIBRARIES"; break; +	case 3: primary = "SCRIPTS";     break; +	case 4: primary = "HEADERS";     break; +	case 5: primary = "DATA";        break; +	case 6: primary = "JAVA";        break; +	default: ; +	} + +	if (name.isEmpty()) { +		KMessageBox::sorry(this, i18n("You have to give the target a name")); +		return; +	} + +#if 0 +	if (primary == "LIBRARIES" && !name.startsWith("lib")) { +		KMessageBox::sorry(this, i18n("Libraries must have a lib prefix.")); +		return; +	} + +	if (primary == "LTLIBRARIES" && !name.startsWith("lib")) { +		KMessageBox::sorry(this, i18n("Libtool libraries must have a lib prefix.")); +		return; +	} + +	if (primary == "LTLIBRARIES" && name.right(3) != ".la") { +		KMessageBox::sorry(this, i18n("Libtool libraries must have a .la suffix.")); +		return; +	} + +#endif + +	if( primary.endsWith("LIBRARIES") && !name.startsWith("lib") && !module_box->isChecked() ) +	    name.prepend( QString::fromLatin1("lib") ); + +	if( primary == "LTLIBRARIES" && !name.endsWith(".la") ) +	    name.append( QString::fromLatin1(".la") ); + +	if ( primary == "LIBRARIES" && !name.endsWith(".a") ) +	    name.append ( QString::fromLatin1(".a") ); + +	QPtrListIterator<TargetItem> it(m_subproject->targets); +	for (; it.current(); ++it) +		if (name == (*it)->name) { +			KMessageBox::sorry(this, i18n("A target with this name already exists.")); +			return; +		} + +	QStringList flagslist; +	if (primary == "LTLIBRARIES") { +		if (allstatic_box->isChecked()) +			flagslist.append("-all-static"); +		if (avoidversion_box->isChecked()) +			flagslist.append("-avoid-version"); +		if (module_box->isChecked()) +			flagslist.append("-module"); +		if (noundefined_box->isChecked()) +			flagslist.append("-no-undefined"); +	} +	flagslist.append(ldflagsother_edit->text()); +	QString ldflags = flagslist.join( " " ); + +	TargetItem *titem = m_widget->createTargetItem(name, prefix, primary, false); +	// m_detailsView->insertItem ( titem ); +	m_subproject->targets.append(titem); + +	QString canonname = AutoProjectTool::canonicalize(name); + +	QMap<QString,QString> replaceMap; + +	if( primary == "PROGRAMS" || primary == "LIBRARIES" || primary == "LTLIBRARIES" || primary == "DATA"  ){ +		QString varname = prefix + "_" + primary; +		m_subproject->variables[varname] += (" " + name); +		replaceMap.insert(varname, m_subproject->variables[varname]); +		if ( primary != "DATA" ){ +			replaceMap.insert(canonname + "_SOURCES", ""); +		} +	} +	if (primary == "LTLIBRARIES" || primary == "PROGRAMS") +            replaceMap.insert(canonname + "_LDFLAGS", ldflags); + +	AutoProjectTool::addToMakefileam(m_subproject->path + "/Makefile.am", replaceMap); + +	QDialog::accept(); +} + +void AddTargetDialog::slotFileNameChanged ( const QString& text ) +{ +	canonicalLabel->setText ( AutoProjectTool::canonicalize ( text ) ); +} + +#include "addtargetdlg.moc" | 
