File indexing completed on 2024-05-12 04:39:40
0001 /* 0002 SPDX-FileCopyrightText: 2010 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-or-later 0005 */ 0006 0007 #include "defineswidget.h" 0008 0009 #include <KLocalizedString> 0010 #include <QAction> 0011 0012 #include "../ui_defineswidget.h" 0013 #include "definesmodel.h" 0014 #include <debug.h> 0015 0016 using namespace KDevelop; 0017 0018 DefinesWidget::DefinesWidget( QWidget* parent ) 0019 : QWidget ( parent ), ui( new Ui::DefinesWidget ) 0020 , definesModel( new DefinesModel( this ) ) 0021 { 0022 ui->setupUi( this ); 0023 ui->defines->setModel( definesModel ); 0024 ui->defines->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch ); 0025 connect(definesModel, &DefinesModel::dataChanged, this, QOverload<>::of(&DefinesWidget::definesChanged)); 0026 connect(definesModel, &DefinesModel::rowsInserted, this, QOverload<>::of(&DefinesWidget::definesChanged)); 0027 connect(definesModel, &DefinesModel::rowsRemoved, this, QOverload<>::of(&DefinesWidget::definesChanged)); 0028 0029 auto* delDefAction = new QAction(i18nc("@action", "Delete Define"), this); 0030 delDefAction->setShortcut( QKeySequence(Qt::Key_Delete) ); 0031 delDefAction->setShortcutContext( Qt::WidgetWithChildrenShortcut ); 0032 delDefAction->setIcon( QIcon::fromTheme(QStringLiteral("edit-delete")) ); 0033 ui->defines->addAction( delDefAction ); 0034 ui->defines->setContextMenuPolicy( Qt::ActionsContextMenu ); 0035 connect( delDefAction, &QAction::triggered, this, &DefinesWidget::deleteDefine ); 0036 } 0037 0038 DefinesWidget::~DefinesWidget() 0039 { 0040 } 0041 0042 void DefinesWidget::setDefines( const Defines& defines ) 0043 { 0044 bool b = blockSignals( true ); 0045 clear(); 0046 definesModel->setDefines( defines ); 0047 blockSignals( b ); 0048 } 0049 0050 void DefinesWidget::definesChanged() 0051 { 0052 qCDebug(DEFINESANDINCLUDES) << "defines changed"; 0053 emit definesChanged( definesModel->defines() ); 0054 } 0055 0056 void DefinesWidget::clear() 0057 { 0058 definesModel->setDefines( {} ); 0059 } 0060 0061 void DefinesWidget::deleteDefine() 0062 { 0063 qCDebug(DEFINESANDINCLUDES) << "Deleting defines"; 0064 const QModelIndexList selection = ui->defines->selectionModel()->selectedRows(); 0065 for (const QModelIndex& row : selection) { 0066 definesModel->removeRow( row.row() ); 0067 } 0068 } 0069 0070 #include "moc_defineswidget.cpp"